/************************************************************************/
/* @author lynnbest
排序複習:升序
1.冒泡
兩個相鄰依次比較交換,將最大的沉到最右邊
兩層尋壞,第一層控制比較次數,第二層控制遍歷比較順序
2.選擇
從所有的位挑出最小的賦值給第0位
然後從剩下的當中,在選擇最小的賦給第1個
依次 也就是找位置 在交換
*/
/************************************************************************/
#include <stdio.h>
void printfarray(int *a,int len);
void ascendsort_bubble(int *a,int n);
void acsendsort_choice(int *a,int n);
int main()
{
int a[]={6,8,4,3,2,1};
int len=sizeof(a)/sizeof(a[0]);
printf("排序前:\n");
printfarray(a,len);
ascendsort_bubble(a,len);
// acsendsort_choice(a,len);
printf("排序後:\n");
printfarray(a,len);
return 0;
}
void printfarray(int *a,int len)
{
for(int i=0;i<len;i++)
printf("%3d",a[i]);
printf("\n");
}
void ascendsort_bubble(int *a,int n) //冒泡升序
{
int temp;
for(int i=0;i<n-1;i++)
for(int j=0;j<n-1-i;j++)
{
if(a[j]>a[j+1])
{
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
}
void acsendsort_choice(int *a,int n) //選擇升序
{
int min,temp;
for(int i=0;i<n;i++)
{
min=i;
for(int j=i;j<n;j++) //這個迴圈就是在找最小的 位置
if(a[min]>a[j])
min=j;
temp=a[min]; //將找到的最小和對應位置 交換
a[min]=a[i];
a[i]=temp;
}
}