c语言之排序
1.冒泡排序(一)
拿第I个数分别和后面的数比较,小的放在前面,第一次循环后,第一个数是最小的,第二次循环从第二个数开始比较,依次执行。
1 for(i=0;i<n-1;i++){ 2 for(j=i+1;j<n;j++){ 3 if(a[i]>a[j]){ 4 t=a[i]; 5 a[i]=a[j]; 6 a[j]=t; 7 } 8 } 9 }
2.冒泡排序(二)
拿前一个数和后一个数进行比较,把大数放在后面,第一次循环结束后,最大的数在最后一位,下一次循环还是从第一个数开始比较,依次执行。
for(i=0;i<n-1;i++){ for(j=0;j<n-i-1;j++){ if(a[j]>a[j+1]){ t=a[j]; a[j]=a[j+1]; a[j+1]=t; } } }
3.选择排序
定义一个标记,首先放在第一个数上,然后依次和后面的数进行比较,如果比后面的数小的话,就把标记移动到该位置上,一次循环结束后判断该标记和初始标记值是否相同,不同就将该位置的数值进行交换,下一次循环从第二个数开始,依次执行。
1 for(i=0;i<n-1;i++){ 2 k=i; 3 for(j=i+1;j<n;j++){ 4 if(a[j]<a[k]){ 5 k=j; 6 } 7 8 } 9 if(i!=k){ 10 temp=a[k]; 11 a[k]=a[i]; 12 a[i]=temp; 13 14 } 15 }
4.插入排序
1 for(i=2;i<n+1;i++){ 2 r[0]=r[i]; 3 j=i-1; 4 for(;r[j]>r[0];j--){ 5 r[j+1]=r[j]; 6 } 7 r[j+1]=r[0]; 8 }