2 排序演算法 快速排序

2021-08-20 11:16:07 字數 839 閱讀 5193

問題描述:

利用快速排序演算法對下列例項排序,在演算法執行過程中,寫出陣列

a第一次排序後被分割的過程。

a=(65,70,75,80,85,55,50,2)

解題思想:在快速排序中,記錄的比較和交換是從兩端向中間進行的,關鍵字較大的記錄一次就能交換到後面的單元,總的比較和移動次數較少。對於輸入的陣列a[p:r],做法為:

*分解:以a[p]為基準元素將a[p: r]劃分成三部分,分別為a[p: q-1], a[q] 和a[q+1:r], 使得a[p: q-1]中任一元素不大於 a[q], a[q+1:r]中任一元素不小於 a[q] 。

*遞迴求解:分別對a[p:q-1]和a[q+1:r]進行遞迴排序。

*合併:將排好序的a[p:q-1]和a[q+1:r]合併,得到a[p:r]。

**如下:

四 排序演算法 快速排序

快速排序的思想 選擇陣列中的乙個數作為中軸線,然後以這個中軸線為中心,大於中軸線的資料放到右邊,小於中軸線的資料放到左邊,然後每次比較完後再變中軸線的位置,不斷比較下去 include using namespace std template void quick sort t arry,int l...

2 排序演算法 氣泡排序

氣泡排序 bubble sort 也是一種簡單直觀的排序演算法。它重複地走訪過要排序的數列,一次比較兩個元素,如果他們的順序錯誤就把他們交換過來。走訪數列的工作是重複地進行直到沒有再需要交換,也就是說該數列已經排序完成。這個演算法的名字由來是因為越小的元素會經由交換慢慢 浮 到數列的頂端。作為最簡單...

32排序演算法之快速排序

排序演算法之快速排序 基本原理 反覆進行有序劃分。有序劃分方法 在陣列a中任選乙個元素x作為劃分元素,通過比較將小於x的元素換到陣列的左端 左段 將大於或等於x的元素換到陣列右端 右段 x本身位於兩段之間。如果左 右段元素個數多於1,則遞迴的將左 右段各自劃分,直到每段元素個數都不超過1,從而達到排...