C 快速排序演算法

2021-10-12 07:29:22 字數 859 閱讀 7739

快速排序法是基於分治思想,從序列陣列中隨機選取主元pivot作為分界元素,然後將大於等於主元pivot的元素放到右邊,小於等於主元pivot的元素放到左邊,則主元所在的位置,是乙個有序的位置,即主元位置已經處於有序位置。每一次遍歷操作就是找到分界元素的位置過程。主元把陣列分成了兩半部分。把乙個大的陣列通過主元分割成兩小部分的這個操作,我們也稱之為分割操作(partition)。然後通過遞迴的方式,對左右兩部分採取同樣的方式,每次選取乙個主元 元素,使他處於有序的位置,遞迴的出口就是陣列成為1個元素或者0個元素。因此主關鍵的任務是如何分割操作partition。

// 快速排序法1(單方向調整)

intpartition

(int arr,

int left,

int right)

} arr[right]

= arr[i]

; arr[i]

= pivot;

return i;

}// 雙方向調整(假定主元還是在第乙個元素)

intpartition2

(int arr,

int left,

int right)

while

(i <= j && arr[j]

>= pivot)

if(j <= i)

else

} arr[left]

= arr[j]

; arr[j]

= pivot;

return j;

}void

quicksort

(int arr,

int left,

int right)

}

排序演算法 快速排序 C

單向掃瞄就地重排 int partitation 1way int array,int nidxleft,int nidxright return nidxsmall 雙向掃瞄就地重排 int partitation 2way int array,int nidxleft,int nidxright...

快速排序演算法C

快速排序演算法 c 實現 評注版 經常看到有人在網上發快速排序的演算法,通常情況下這些人是在準備找工作,或者看 演算法導論 這本書,而在他們發布的 通常是差不多的版本,估計也是網上 copy 一下,自己改改,跑過了就算了,但是通常這樣玩根本沒有太大作用,如果到一家公司,給你一台不能上網的筆記本,20...

快速排序演算法(C)

sort快排函式的基本版,效率n logn,快排的完全版就是在遞迴之中夾雜對序列的預判斷,最優的選擇排序方法,快速排序演算法只是其中之一。簡單的說明一下快速排序的思想,對於乙個數列,首先選擇乙個基數 x 進行第一次排序,把比x 小的放在x左邊,大的放右邊 預設從小到大 例如 8 4 5 7 6 9 ...