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     }
原文地址:https://www.cnblogs.com/jiangyicheng/p/5106723.html