排序演算法 快速排序(QuickSort)

2021-07-23 08:37:30 字數 1251 閱讀 5613

快速排序演算法又稱劃分交換排序(partition-exchange sort)最早由東尼·霍爾(c. a. r. hoare)-圖靈獎得主於2023年提出的。常見的排序演算法大概七八種,其中快速排序是使用很廣泛、速度也較快的一種演算法,其名「快速」就能看出它的特點。

快速排序採用了「分治法」策略,把乙個序列劃分為兩個子串行。

現有一數列:

對此數列進行快速排序。選擇第乙個元素45作為第一趟排序的「基準」(基準值可以任意選擇)。

第一趟:將元素45拿出來,分別從數列的兩端開始探測

至此,第一輪結束,「基準」45左側為小數區,右側為大數區。同樣的分別對小數區和大數區應用此方法直至完成排序。

快速排序核心演算法:

//每一輪的快速排序

int quickpartition (int a,int low,int high)

if (low < high)

while(low < high && a[low] <= temp)//從左向右查詢第乙個大於「基準」的數

if(low < high)

a[low] = temp;//將「基準」填到最終位置

}return low;//返回「基準」的位置,用於下一輪排序。

}

遞迴呼叫quicksort(分治法):

//快速排序-遞迴演算法

void quicksort (int a,int low,int high)

}

主函式呼叫

void main()

;//初始化陣列a

quicksort(a,0,7);

cout

for(int i = 0;i <= 7;i++)

getchar();

}

排序後結果:

排序演算法 快速排序演算法

網際網路的大型公司還在火熱招聘中,參與了一次又一次的筆試,都不通過,我還是太菜!作為程式設計人員,需要邁過去 資料結構與演算法 這個坎,畢竟,筆試不會真的很虧,加油吧,少些水,多點實操。一 快速排序演算法思想 從一組資料中找出乙個基準值,一般是選擇中間值作為基準值,然後從左到右將值與基準值進行比較,...

演算法 排序演算法 快速排序

快速排序是對冒泡法排序的一種改進。快速排序演算法 的基本思想是 將所要進行排序的數分為左右兩個部分,其中一部分的所有資料都比另外一 部分的資料小,然後將所分得的兩部分資料進行同樣的劃分,重複執行以上的劃分操作,直 到所有要進行排序的資料變為有序為止。可能僅根據基本思想對快速排序的認識並不深,接下來以...

排序演算法 快速排序

快速排序使用分治法 divide and conquer 策略來把乙個序列 list 分為兩個子串行 sub lists 步驟為 1.從數列中挑出乙個元素,稱為 基準 pivot 2.重新排序數列,所有元素比基準值小的擺放在基準前面,所有元素比基準值大的擺在基準的後面 相同的數可以到任一邊 在這個分...