交换类排序
一、冒泡排序(Bubble Sort)
1.时间复杂度:O(n2)
2.空间复杂度:O(1)
1 void BubbleSort(int* a, int num) { 2 int i, j; 3 for (i = 1; i <= num - 1; ++i) { 4 for (j = 1; j <= num - i; ++j) { 5 if (a[j] > a[j + 1]) {//前后交换 6 a[0] = a[j]; 7 a[j] = a[j + 1]; 8 a[j + 1] = a[0]; 9 } 10 } 11 } 12 }
二、快速排序(Quick Sort)
1.时间复杂度:O(nlog2n)
2.空间复杂度:O(log2n)
3.实现:
1 void QuickSort(int* nums, int left, int right){ 2 int i = left, j = right, t = nums[left]; 3 if (i < j){ 4 while (i < j){ 5 while (i < j && nums[j] > t) j--; //从右边找到第一个小于初始位置的值 6 nums[i] = nums[j]; //nums[j]存入初始位置 7 while (i < j && nums[i] <= t) i++; //从左边找到第一个大于初始位置的值 8 nums[j] = nums[i]; //nums[i]存入nums[j] 9 } 10 nums[i] = t; //轴枢存入nums[i] 11 QuickSort(nums, left, j - 1); //快排轴枢左区间 12 QuickSort(nums, j + 1, right); //快排轴枢右区间 13 } 14 }
三、参考资料:
https://blog.csdn.net/HUAI_BI_TONG/article/details/116648066

浙公网安备 33010602011771号