快速排序2020 11 08

2021-10-10 08:48:45 字數 610 閱讀 8797

思想:將第乙個關鍵字作為樞紐,表頭記為i,表尾的記為j。表尾從表尾開始往前依次掃瞄,直到找到乙個比該樞紐小的關鍵字,與樞紐所在的位置進行交換,交換後,從表頭的位置上依次向後掃瞄,找到乙個比樞紐大的關鍵字,與j的位置的關鍵字進行交換,i,j交替依次進行,直到i=j結束該趟排序。

快排是將乙個序列根據某個關鍵字進行劃分,使其左子表的元素都小於該關鍵字,右子表的元素都大於該關鍵字,然後再對左子表和右子表分別進行快排,使整個序列有序。是乙個遞迴演算法,越無序,效率越高。最壞時間複雜度為o(n²),平均時間複雜度為o(nlogn),它是所有平均複雜度排序當中效率最高的演算法,所以得名快速排序。經過快速排序的一趟比較後,必有乙個關鍵字到達最終位置。

**如下:

void

quicksort

(int a,

int n,

int low,

int high)

while

(i)++i;

if(i} a[i]

=temp;

quicksort

(a,low,i-1)

;quicksort

(a,i+1

,high);}

}}

遞迴 快速排序 快速排序

問題描述 用遞迴來實現快速排序 quick sort 演算法。快速排序演算法的基本思路是 假設要對乙個陣列a進行排序,且a 0 x。首先對陣列中的元素進行調整,使x放在正確的位置上。同時,所有比x小的數都位於它的左邊,所有比x大的數都位於它的右邊。然後對於左 右兩段區域,遞迴地呼叫快速排序演算法來進...

排序 快速排序

快速排序時實踐中最快的一直排序,平均時間是0 nlogn 最壞的情況是o n2 但是很容易將這種情況避免 空間複雜度 o n lgn 不穩定。快速排序時基於分治模式處理的,對乙個典型子陣列a p.r 排序的分治過程為三個步驟 1.分解 a p.r 被劃分為倆個 可能空 的子陣列a p q 1 和a ...

排序 快速排序

定義 在快速排序演算法中,使用了分治策略,將要排序的序列分成兩個子串行,然後遞迴地對子序列進行排序,直到整個序列排序完畢。步驟 1.在序列中選擇乙個關鍵元素作為軸 2.對序列進行重新排序,將比軸小的元素移到軸的前邊,比軸大的元素移動到軸的後面。在進行劃分之後,軸便在它最終的位置上 3.遞迴地對兩個子...