快速排序演算法(C語言實現)

2021-09-24 14:29:31 字數 2182 閱讀 1641

自實現部分可參看慕課網陳越老師資料結構課程。

庫函式函式原型:

void qsort(void *buf, size_t num, size_t size, int ( * compare)( const void *, const void *));

函式說明:

對buf指向對資料(包含num項,每項的大小為size)進行快速排序。

void *buf:無型別指標,如果要排序乙個陣列,則為指向陣列第乙個資料的指標;

size_t num:要排序的資料的項數,可理解為待排陣列的元素個數;

size_t size:待排資料每項的大小,以位元組byte為單位;

int ( * compare)( const void *, const void *):

「函式指標」,使用者自定義函式,函式名為compare,const void *:無型別常量指標,可以指向任意型別的資料,但是必須為常量。

compare函式規定待排陣列的排序規則 :

a. 如果函式compare的第乙個引數排在第二個前面,返回負值;

b. 如果函式compare的第乙個引數和第二個位置不要求,返回零值;

c. 如果函式compare的第乙個引數排在第二個後面,返回正值;

∗ ∗簡

單整數排

序∗

∗\color

∗∗簡單整數

排序∗∗

/*---------------簡單整數排序--------------------*/

intcompare

(const

void

*a,const

void

*b)/* 呼叫介面 */

qsort

(a, n,

sizeof

(int

), compare)

;/*---------------簡單整數排序--------------------*/

∗ ∗結

構體陣列

node

中的某鍵

值key

排序∗∗

\color

∗∗結構體數

組nod

e中的某

鍵值ke

y排序∗

/*--------------- 一般情況下,對結構體node中的某鍵值key排序 ---------------*/

struct node a[maxn]

;int

compare2keys

(const

void

*a,const

void

*b)return k;

}/* 呼叫介面 */

qsort

(a, n,

sizeof

(struct node)

, compare2keys)

;/*--------------- 一般情況下,對結構體node中的某鍵值key排序 ---------------*/

/* 快速排序 */

elementtype median3

( elementtype a,

int left,

int right )

void

qsort

( elementtype a,

int left,

int right )

swap

(&a[low]

,&a[right-1]

);/* 將基準換到正確的位置 */

qsort

( a, left, low-1)

;/* 遞迴解決左邊 */

qsort

( a, low+

1, right )

;/* 遞迴解決右邊 */

}else

insertionsort

( a+left, right-left+1)

;/* 元素太少,用簡單排序 */

}void

quicksort

( elementtype a,

int n )

快速排序演算法 C語言實現

快速排序演算法 c語言實現 注 本篇內容為翻譯,之所以選擇這篇進行翻譯原因是該文章含有動畫,能夠更加直觀地展示快速排序。同時,可以仔細看一下 中把結構化的思想給予了更加充分地表現。按照功能進行模組劃分的思想得到了徹底地貫徹。以下內容翻譯自 譯文 在快速排序演算法中,使用了分治策略。首先把序列分成兩個...

快速排序演算法 C語言實現

注 本篇內容為翻譯,之所以選擇這篇進行翻譯原因是該文章含有動畫,能夠更加直觀地展示快速排序。同時,可以仔細看一下 中把結構化的思想給予了更加充分地表現。按照功能進行模組劃分的思想得到了徹底地貫徹。以下內容翻譯自 譯文 在快速排序演算法中,使用了分治策略。首先把序列分成兩個子串行,遞迴地對子序列進行排...

c語言實現快速排序演算法

設要排序的陣列是a 0 a n 1 首先任意選取乙個資料 通常選用第乙個資料 作為關鍵資料,然後將所有比它小的數都放到它前面,所有比它大的數都放到它後面,這個過程稱為一趟快速排序。值得注意的是,快速排序不是一種穩定的排序演算法,也就是說,多個相同的值的相對位置也許會在演算法結束時產生變動。一趟快速排...