[acm]排序总结

初级:

1.冒泡排序

  原理:每趟排序,相邻两数依次比较。

  注:从大到小,从小到大,只改变<,>符号,for中的不用变

 1  for(int i=0 ; i<n ; i++){
 2         for(int j=1 ; j<n-i ; j++){
 3             if( a[j] < a[j-1 ]){
 4                 int temp;
 5                 temp = a[j];
 6                 a[j] = a[j-1];
 7                 a[j-1] = temp;
 8             }
 9         }
10     }

2.选择排序

  原理:每趟排序(i),选出最值和第i位交换

  注:储存最值下标

 1 for(int i=0 ; i<n ;i++){
 2         int p=i;
 3         for(int j=i+1; j<n ; j++){
 4             if(a[j]<a[p]){
 5                 p=j;
 6             }
 7         }
 8         int temp;
 9         temp=a[i];
10         a[i]=a[p];
11         a[p]=temp;
12     }

3.插入排序(不常用)

  原理:从第一个元素开始为顺序,后面的元素依次向前插入

  注:只进行n-1趟(默认第一个元素有序)

1     for(int i=1 ; i<n ;i++){
2         int temp =a[i], j=i;
3         while(j>0 && temp < a[j-1]){
4             a[j] = a[j-1];
5             j--;
6         }
7         a[j]=temp;
8     }

 

  

posted @ 2020-06-14 23:23  Hoppz  阅读(317)  评论(0编辑  收藏  举报