初级:
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 }