C++排序算法代码汇总
排序算法稳定性:两个相同的元素排序前后的相对位置关系不会发生改变。 复杂度比较 算法 平均时间复杂度 最好情况 最坏情况 空间复杂度 稳定性 冒泡排序 O(N^2) O(N^2) O(N^2) O(1) 稳定 插入排序 O(N^2) O(N) O(N^2) O(1) 稳定 选择排序 O(N^2) O(N^2) O(N^2) O(1) 稳定 希尔排序 O(N ^ 3/2 ) O(N^2) O(1) 不稳定 堆排序 O(NlogN) O(NlogN) O(NlogN) O(1) 不稳定 归并排序 O(NlogN) O(NlogN) O(NlogN) O(N) 稳定 快速排序 O(NlogN) O(NlogN) O(N^2) O(logN) 不稳定 冒泡排序 排序过程 将第一个元素与第二个元素比较大小,如果第一个元素大于第二个元素则调换他们两的位置; 比较第二个元素和第三个元素的大小,如果第二个元素大于第三个元素则调换他们两的位置; 依次类推,进行两两元素的比较和交换,最终最大的元素排在了最后面; 重复1到3过程,直到所有元素都排序。 图片演示 //冒泡排序 //平均时间复杂度:O(N^2) //最坏情况复杂度:O(N^2) //空间复杂度:O(1) //稳定排序 void bubblesort(vector<int>& a) { int n = a.size(); for (int i