快速排序
快速排序基本思想:
1.選擇一個基準(zhǔn)哨兵元素,通常選擇第一個或者最后一個元素(可改進(jìn));
2.通過一趟排序講待排序的記錄分割成獨(dú)立的兩部分,其中一部分記錄的元素值均比基準(zhǔn)元素值小。另一部分記錄的 元素值比基準(zhǔn)值大;
3.此時基準(zhǔn)元素放入正確位置;
4.然后分別對這兩部分記錄用同樣的方法繼續(xù)進(jìn)行排序,直到整個序列有序;
時間復(fù)雜度: O(nlog2n)-->O(n^2)
空間復(fù)雜度:O(nlog2n)
是否穩(wěn)定排序:不穩(wěn)定
void quickSort(int *array, int left, int right) { if (left < right) { int guard = array[left]; int i = left, j = right; while (i < j) { while (i < j && array[j] >= guard)//從后向前,找第一個<guard的元素 { --j; } if (i < j) { array[i++] = array[j]; } while (i < j && array[i] < guard)//從前向后,找第一個>guard的元素 { ++i; } if (i < j) { array[j--] = array[i]; } } array[i] = guard; quickSort(array, left, i-1); quickSort(array, i+1, right); } }

浙公網(wǎng)安備 33010602011771號