快速排序演算法例項

2021-10-07 22:56:03 字數 1199 閱讀 5419

對關鍵碼序列(66,13,51,76,81,26,57,69,23)進行快速排序。

求第一趟劃分後的結果。

關鍵碼序列遞增。

以第乙個元素為劃分基準。

將兩個指標i,j分別指向表的起始和最後的位置。

反覆操作以下兩步:

(1)j逐漸減小,並逐次比較j指向的元素和目標元素的大小,若p(j)(2)i逐漸增大,並逐次比較i指向的元素和目標元素的大小,若p(i)>t則交換位置。

直到i,j指向同乙個值,迴圈結束。

步驟一:

首先設定兩個變數i,j。分別指向序列的首尾元素。

步驟二:

該例子是以第乙個元素為基準,從小到大進行排列。讓j從後向前進行查詢,直到找到第乙個小於66的元素。則將最後乙個j指向的數23,和i指向的66交換位置。然後將i從前向後查詢,直到找到第乙個大於66的元素76。

步驟三:

將76和66位置互換。讓j從後向前進行查詢,直到找到第乙個小於66的元素57。

步驟四:

將57和66交換位置。

步驟五:

然後將i從前向後查詢,直到找到第乙個大於66的元素81.

步驟六:

將81和66交換位置。讓j從後向前進行查詢,直到找到第乙個小於66的元素26。

步驟七:

將26和66交換位置。此時i,j都同時指向了目標元素66.查詢停止。所得到的序列就是第一趟排序的序列。

快速排序例項

include stdafx.h include define cutoff 3 int array void insert sort int array,int size array j temp print array array,size void print array int array,...

快速排序例項

快速排序是根據待排序陣列中的某一值val,將待排序陣列分割成兩部分資料,前一部分陣列比val小 後一部分陣列比val大,之後對每部分資料重複上述過程,最終實現待排序陣列的有序性,例項如下 public class quicksortmain 切分待排序陣列 param arr param low p...

快速排序例項

void sort int a,int left,int right int i left int j right int key a left while i a i a j 找到乙個這樣的數後就把它賦給前面的被拿走的我的值 如果第一次迴圈且鍵是 乙個 左 那麼就是給金鑰 while i a i ...