排序演算法之 交換類排序(二)快排

2021-09-08 20:05:23 字數 1032 閱讀 4070

簡介

快排是對氣泡排序的一種改進,改進了氣泡排序一次排序只能消除乙個逆序的缺點,實現了一次交換能消除多個逆序。在這裡我簡單說一下快排的實現原理。

步驟

有陣列r,r[0]不存值,從r[1]開始存值到r[n]

1、找樞紐,我們一般把r[1]視作樞軸,把r[1]的值存在r[0],同時我們把r[1]視作空單元。

2、設兩個指標,low和height,他們分別指向陣列的兩端,即r[1]和r[n],從兩端向中間進行劃分

3、首先讓high指示的值與樞軸值進行比較,發現比樞軸值更小的值時,我們把它放在low所指示的值(即剛剛空出的r[1]處),同時空出high所指向的單元,然後我們再讓low向右移動一位,直到發現比樞軸更大的值時,我們把這個值放到空出的high所指向的單元,然後我們讓high向左移動一位,繼續進行比較,直至low和high指向了同乙個記錄,我們把樞軸值賦給交匯處的記錄處,這樣就完成了一趟快排。

**實現

#include #define n 10

#define m n+1

int qkpass(int *r,int low,int high)

r[low] = r[high];

//找到乙個比樞紐值大的值給high

while(lowr[high] = r[low];

} r[low] = r[0];

return low;//此時low和high交匯了,我們把樞紐值給交匯處,返回交匯處的值

}void qksort(int *r,int low,int high)

} void qkprint(int *r)

}int main(void)

qksort(r,1,10);

qkprint(r);

return 0;

}

排序演算法之交換(冒泡與快排)

排序演算法根據是否需要訪問外存,分為內部排序和外部排序。使用記憶體,分為插入 直接插入排序 希爾排序 選擇 簡單選擇排序 堆排序 交換 氣泡排序 快速排序 歸併 基數。5.氣泡排序 效率很低,實現簡單 待排序列 3 1 4 2 第一趟排序結果 1 3 2 4 第二趟排序結果 1 2 3 4 第三趟排...

排序演算法之交換類排序

交換類排序的思想,顧名思義,就是在每一輪的排序過程,通過不斷的交換來使每個元素到達最終的位置。常見的兩種交換類排序有氣泡排序和快速排序。氣泡排序作為最基礎的排序演算法,它的排序思想也如其名,通過比較兩個相鄰資料的大小,來決定是否交換它們的位置,最後經過多輪排序最終是整個序列有序。網上找到的gif 分...

常見的演算法排序之交換類排序

1.快速排序 基本實現方法 經過一次排序演算法之後,先簡單的將資料分為兩部分,取乙個中間數 一般為第乙個元素 以這個中間數為中心,左邊的數為比這個數小的數,右邊的數為比這個數大的數。之後再進行遞迴演算法,分別處理已經分好的以中間數為分界的左右兩堆資料。直到找到我們想要的排好序的陣列。基本方法步驟 1...