快速排序的平均时间性能很好,与插入排序不同,快速排序根据整个文件,把控制当前排序进程的基准关键字放到正确的位置上。
时间复杂度:平均情况下,O(NlogN);最坏情况:O(N2)
空间复杂度:O(NlogN)
稳定性:不稳定
// 快速排序 // left = 0; // right = listSize - 1; void quicksort(int list[], int left, int right) { int pivot; int i, j; int temp = 0; if (left < right) { i = left; j = right + 1; pivot = list[left]; //完成一次排序,即将数组中小于pivot的关键字放在左边,大于pivot的关键字放在右边 do { do i++; while (list[i] < pivot); do j--; while (list[j] > pivot); if (i < j) { temp = list[i]; list[i] = list[j]; list[j] = temp; //SWAP(list[i], list[j]); //list[i]和list[j]互换 } } while (i < j); temp = list[left]; list[left] = list[j]; list[j] = temp; //SWAP(list[left], list[j]); quicksort(list, left, j - 1); quicksort(list, j + 1, right); } }
原文:https://www.cnblogs.com/vicky2021/p/14749227.html