几种排序方法总结

先立一个flag在这边,等会儿慢慢补全。。。。。

冒泡排序:

 1 void bubble_sort(int a[],int n) //每一次循环都产生一个最大数在末尾,所以下面一次循环就不需要比较了
 2 
 3 {
 4 
 5     int i,j,temp;
 6 
 7     for(j=0;j<n-1;j++)
 8 
 9         for(i=0;i<n-1-j;i++)
10 
11         {   if(a[i]>a[i+1])
12 
13                  {
14 
15                     temp=a[i];
16 
17                     a[i]=a[i+1];
18 
19                     a[i+1]=temp;
20 
21                   }
22            }         
23 
24   }           

选择排序:

 //每次从待排序的数据元素中选出最小(或最大)存放在序列的起始位置
1
void select_sort(int a[],int n)//循环的次数和冒泡排序类似 2 { 3 int i,j,min,t; 4 for(i=0;i<n-1;i++) 5 { 6 min=i;//查找最小值 7 for(j=i+1;j<n;j++) 8 if(a[min]>a[j]) 9 min=j;//交换 10 if(min!=i)//这句可加可不加 11 { 12 t=a[min]; 13 a[min]=a[i]; 14 a[i]=t; 15 } 16 } 17 }

插入排序:

//这里讨论的主要是直接插入排序(其他的还有折半插入排序)
//插入排序说白了就是一串数字,从第二个数字开始,每次向后看一个数字,然后把这个数字和前面的若干个数字比较,看比前面的大或者小就插上去

           

 1 void insertion_sort(int a[],int n)
 2 {
 3     int i,j;
 4     int temp;
 5     for(i=1;i<n;i++)
 6     {
 7         temp=a[i];
 8         j=i-1;
 9     //和已经排序好的数逐一比较,大于temp时,该数移后
10         while((j>=0)&&(a[j]>temp))
11         {
12             a[j+1]=a[j];
13             j--;
14         }
15         //存在大于temp 的数
16         if(j!=i-1)//当挪到最前面的时候j=-1
17             a[j+1]=temp;
18     }
19 }
原文地址:https://www.cnblogs.com/guohaoyu110/p/6321909.html