快速排序 挖坑填數 分治法

2021-09-29 07:37:29 字數 1140 閱讀 6976

分析來自原文

此處為自我理解

i =left; j = right; 將基準數x挖出形成第乙個坑a[i]。

while(i!=j)//直到i等於j

將基準數x填入a[i]中

返回此時的i        //或者j,i==j

int

adjustarray

(int s,

int left,

int right)

//right exchange

while

(ii++;if

(is[i]

=x;}

}

先將陣列進行一次排序(利用上個函式)

遞迴呼叫 (注意left與right的值的變化)左右分開。

void

quick_sort

(int s,

int left,

int right)

}

void

quick_sort

(int s,

int left,

int right)

//right為下標

//此處可不用,迴圈到前面可+1

} s[i]

=x;quick_sort

(s,left,i-1)

;quick_sort

(s,i+

1,right)

;}

//可能有點問題???

//選擇基準可以跟簡潔!三值選中

//別人的**,

int partition(int a, int left, int right)

a[left] = temp;

return left;}

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

int main();

quicksort(a, 0, 4);

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

return 0;

}

快速排序 挖坑填數 分治法

快速排序是c.r.a.hoare於1962年提出的一種劃分交換排序。它採用了一種分治的策略,通常稱其為分治法 divide and conquermethod 該方法的基本思想是 1 先從數列中取出乙個數作為基準數。2 分割槽過程,將比這個數大的數全放到它的右邊,小於或等於它的數全放到它的左邊。3 ...

快速排序(Quick Sort) 挖坑填數法

前面的博文講了氣泡排序 選擇排序 插入排序,今天我們談談快速排序!快速排序的基本思想是 1 先從序列中取出乙個數作為基準數。2 分割槽過程,將比這個數大的數全放到它的右邊,小於或等於它的數全放到它的左邊。分割槽的方式多樣,但一定要保證基準數左邊的數比它大 小 右邊的數比它小 大 3 再對左右區間重複...

「挖坑填坑」理解快速排序

快速排序的基本思路 找乙個基準元素,對陣列進行調整,調整的標準是,這個基準元素的左邊存放的都是比這個元素小的,右邊都是比這個元素大的。然後分而治之,對左右兩邊的子陣列利用同樣的規則調整,調整到每乙個子陣列中都只有乙個元素時結束。基本思想很簡單,主要是理解如何在確定基準元素之後,對陣列 子陣列 進行調...