(公升序)快速排序的思想

2021-10-16 17:30:07 字數 1124 閱讀 1415

​ 快速排序具體可以分為兩塊部分:踢與分。

踢:將線性佇列中的某個元素a(一般是開頭的元素),由兩端往中間比較,為它選擇合適的位置,達成佇列中a元素的左側的元素的值小於a元素值,右側的元的素值大於a元素值。由此,確定了a元素在公升序線性表中的位置就確定了下來。

分:線性表中a元素的位置確定,接下來對a元素左側和右側的子線性表進行排序,用上述的方法對子線性表排序。

時間複雜度:o(nlogn)

分析:以樹的概念,樹的深度為logn,同深度的線性表處理時n,logn*n=o(nlogn)

**:

#ifndef quicksort_h_included

#define quicksort_h_included

/* 公升序:為長度為n的陣列s快排,0起始 */

void

quicksort

(int s,

int n)

s[i]

= s[j]

;while

(i<=key)

s[j]

= s[i];}

return;}

#endif

// quicksort_h_included

**檢測路徑:

測試**:

#include

void

quicksort

(int dt,

int s,

int n)

dt[i]

= dt[j]

;while

(i<=key)

dt[j]

= dt[i];}

dt[i]

= key;

quicksort

(dt, s, i)

;quicksort

(dt, i+

1, n)

;return;}

intmain

(void

)quicksort

(num,

0, n)

;for

(int i=

0; i)else

}return0;

}

快速排序思想

本文通俗易懂,但有的描述有問題,轉至 高快省的排序演算法 有沒有既不浪費空間又可以快一點的排序演算法呢?那就是 快速排序 啦!光聽這個名字是不是就覺得很高階呢。假設我們現在對 6 1 2 7 9 3 4 5 10 8 這個10個數進行排序。首先在這個序列中隨便找乙個數作為基準數 不要被這個名詞嚇到了...

快速排序演算法思想

一 快速排序遞迴演算法 1 對下列採用快速排序 2 可以把最左邊 4 作為基數 然後分別從兩邊出發進行檢索 一定要從右邊開始 如果從左邊開始的話等下結果為 53241 因為我們要使左邊的數小於基數 從左邊開始 我們檢索是在大於基數那個位置停止 這時和基數交換 使左邊的數大於基數 導致結果出錯 首先要...

分治思想 快速排序

快速排序思想 設k a 0 取基準元素 將k挪到適當位置,使得比k小的元素都在k左邊,比k大的元素都在k的右邊,和k相等的,在k的左右均可。然後再把k的左邊的元素和右邊的元素按照同樣的方式進行排序。時間複雜度 n logn 空間複雜度 1 和歸併排序比較,快速排序比歸併排序更加節省空間,但是快速排序...