排序演算法總結(快速排序)

2021-07-28 08:38:50 字數 1365 閱讀 1928

終於不用改**了,希望文章大修順利!

穩定的演算法:

不穩定的演算法

內部排序:排序過程不涉及內、外存交換

外部排序:排序過程有內、外存交換

in-place sort(不占用額外記憶體或占用常數的記憶體):插入排序、選擇排序、氣泡排序、堆排序、快速排序。

out-place sort:歸併排序、計數排序、基數排序、桶排序。

unstable sort、in-place sort

時間複雜度->o(

n2) (當輸入陣列已排序時)o(

nlog

n)「分而治之」的思想,乙個序列中選乙個值,把小於它的放左邊,大於它的放右邊。之後對左右兩個子串行同樣操作

**:

c

#include 

#include

int main();

quick_sort(a,0,5);

int i = 0;

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

return0;}

void quick_sort(int s, int l, int r)

s[i] = x;

quick_sort(s, l, i - 1); // 遞迴呼叫

quick_sort(s, i + 1, r);

}}

python

def

quicksort

(arr, left, right):

if(left < right):

print(arr)

i, j = left, right

if len(arr) <= 1:

return

flag = arr[left]

while(left < right):

while(left < right and arr[right] >= flag):

right -= 1

if(left < right):

arr[left] = arr[right]

left += 1

while(left < right and arr[left] < flag):

left += 1

if(left < right):

arr[right] = arr[left]

right -= 1

arr[right] = flag

print(left, right, arr)

quicksort(arr, i, right - 1)

quicksort(arr, right + 1, j)

注意不能用切片的,因為切片傳遞的不是指標,切片是淺拷貝

排序演算法總結 快速排序

快速排序的一般步驟如下 1 先從數列中取出乙個數作為基準數。2 分割槽過程,將比這個數大的數全放到它的右邊,小於或等於它的數全放到它的左邊。3 再對左右區間重複第二步,直到各區間只有乙個數。來自於 啊哈!演算法 這裡需要解釋一下為什麼每次交換的時候都需要右邊的哨兵先走 最主要是相遇點的問題,演算法的...

排序演算法總結 快速排序

前面說的氣泡排序是一種交換排序。交換排序還有一種演算法,就是快速排序演算法。快速排序的核心思想是分而治之。意思就是選出乙個基準 可以是第乙個元素,也可以是最後乙個。為了方便我們選取第乙個 將小於這個基準的全部元素都放在這個基準的左邊,大於這個基準的全部元素都放在基準的右邊。然後分別對左右兩個陣列在進...

內排序演算法總結 快速排序

快速排序 快速排序是一種在含n個數的輸入陣列上最壞情況執行時間為o n2 的演算法,平均效能的期望執行時間為o nlgn 且o nlgn 記號中隱含的常數因子很小。另外,它還能夠進行原地置換排序。快速排序是基於分治模式上的,分治過程三個步驟 1.分解 把陣列a p.r 分成兩個非空子陣列a p.q ...