1、冒泡排序:时间复杂度为O(n2)
假设是由小到大排序:相邻两个数之间进行比较,较大的数在后面。一次比较过后最大的数排在最后面
如:40、8、15、18、12一次排序后为:8、15、18、12、40依次排好直到由小到大拍好
for(int i = 0;i < n-i; i++){ for(int j = 0;j < n-1-i;j++){ //最后几位已经排好的就不需要再排序了 if(a[j] > a[j+1]){ k= a[j]; a[j] = a[j+1]; a[j+1] = k; } } }
2、选择排序:时间复杂度为O(n2)
假设是由小到大的排序:每次选出排序一次中最小的数放在第一位
如:3、4、1、5、2一次排序后为:1、4、3、5、2
for(int i=0;i<n-1;i++){ for(int j=i+1;j<n;j++){ if(a[i]>a[j]){ k= a[i]; a[i] = a[j]; a[j] = k; } } }
3、插入排序:
假设是由小到大的排序:每次排序某个数与之前的数进行比较,若小于则插在其前直到大于前面的数
for(int i =1;i < n; i++){ int j = i-1; int k = a[i]; while(a[i] < a[j]&&j >= 0){ a[j+1] = a[j]; j--; } a[j] = k; }
时间: 2024-10-12 16:37:17