6 7 案例 陣列元素的排序 快速排序篇

2021-10-25 16:53:17 字數 1153 閱讀 1713

1. 快排在每次排序之前都需要選定好乙個元素(樞軸元素),然後把比它小的元素放在左邊,把比它大的元素放在右邊,從另乙個角度來看,快排其實每次都是幫助乙個元素找定它在陣列中的位置。

2. 如果乙個陣列已經排好序,找到了樞軸元素的位置:

把樞軸元素前面的陣列位置當做乙個個坑,那麼我們要做的事情就是把小於樞軸元素的值放入坑中,大的元素每次都直接跳過,**實現起來就是:(由於一開始樞軸元素選定是可以隨便選的,所以選取陣列中最後乙個元素當做樞軸元素)

// length 為 array 陣列的元素個數

int pivot = array[length-1]; // 最後乙個元素當做樞軸元素

int partition = 0; // 坑的位置

for (int i = 0; i < length-1; ++i)

}

把坑佔滿後,由於每次填坑之後,坑的位置會++,所以此時樞軸元素的位置實際上是比樞軸元素值大的第乙個元素,再交換它與選定的樞軸元素

swap(array,partition,right); // 交換最後乙個元素和第乙個比樞軸元素大的坑
這樣,一次快排就完成了,剩下的需要利用遞迴,完整**如下:

#include // 陣列元素交換

void swap(int array, int first, int second)

int partition(int array, int left, int right)

} swap(array,j,right); // 交換最後乙個元素和第乙個比樞軸元素大的坑

return j;

}void quicksort(int array, int left, int right)

int main();

quicksort(array, 0,9);

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

return 0;

}

陣列的排序演算法(插入排序 快速排序)

在實現陣列元素排序時,排序的演算法有很多,例如氣泡排序法,選擇排序法,插入排序法以及快速排序法,來介紹插入排序和快速排序的具體實現吧 插入排序法 插入排序法德基本思路是 將要排序的陣列分成兩部分,每次從後面的陣列部分中取出索引最小的陣列元素,插入到前面陣列的適當位置中。通常在陣列開始排序時,將陣列的...

陣列元素的隨機排序

function randomorder targetarray var arraylength targetarray.length 目標陣列的長度 var temparray1 new array 先建立乙個正常順序的陣列 for var i 0 i arraylength i 將目標陣列的元素...

基於陣列的快速排序

快速排序演算法的實現關鍵就是我們選的基準的位置!然後程式就是個遞迴呼叫,陣列和鍊錶的實現上還是有很大的差別的。include stdio.h 快速排序,核心是定位和遞迴 陣列實現 void swap int a,int b 這個交換方法用到這裡是不行的 void swap0 int a,int b ...