- 冒泡排序法:
关键词:
-
依次比较相邻两个元素的大小
-
若按照从小到大的顺序,则:若前面的数比后面的数大,则两个数交换位置,然后继续相邻两个数比较
伪代码:从小到大排列,长度为n for(int i=0;i<n-1;i++) for(int j=0;j<n-i-1;j++){ if(a[i]>a[i+1]){ temp=a[i+1]; a[i+1]=a[i]; a[i]=temp; } 验证代码 #include <stdio.h> int temp; int main(void) { int BubbleSort(int *a); int arr1[]={23,45,13,75,24,78}; BubbleSort(arr1); return 0; } int BubbleSort(int *a){ for(int i=0;i<6-1;i++){ for(int j=0;j<6-i-1;j++){ if(a[j]>a[j+1]){ temp=a[j+1]; a[j+1]=a[j]; a[j]=temp; } } } for(int k=0;k<6;k++){ printf("%d ",a[k]);//依次输出 } }
输出: 13 23 24 45 75 78
- 选择排序法:
关键词:
-
第一次将数组中最小的数选出来,并放在第一位。
-
同理,第二次就将数组中第二小的数选择出来,并放在第二位。
*后面的以此类推......for(int i=0;i<n-1;i++){ k=i;//默认此趟排序的第一个数是最小的。 for(int j=i+1;j<n;j++){ if(a[j]<a[k]){ k=j; } } if(k!=i) //判断此趟排序的第一个是不是还是最小的,如果是最小的话就不用交换值了 {temp=a[k]; a[k]=a[j]; a[j]=temp; } }
- 插入算法
关键词:
- 将一个数插入到以及排好序的有序数组中,适用于少量数据的排序
- 时间复杂度为O(n^2)
*比较稳定
*最好情况:2,3,5,6插入7(默认从后面比较起)
*最坏情况:2,3,5,7插入1(默认后面比较起)
- 排序算法
最差情况下可能是O(n^2)
也就是当你要作为基准的那个值的是最小或者是最大的
随机快排O(n*logn),是最常用的快排
网友评论