C語言 氣泡排序演算法總結(qsort函式的使用)

2021-10-04 22:53:32 字數 2130 閱讀 4729

c語言中可使用qsort函式對資料進行排序

qsort函式的使用

第乙個引數:待排序陣列的首元素位址

第二個引數:待排序陣列的元素個數

第三個引數:待排序陣列的每個元素的大小-單位是位元組

第四個引數:是函式指標,比較兩個元素的所用函式的位址-這個函式使用者自己實現

函式指標的兩個引數是:待比較的兩個元素的位址

整數排序

int

cmp_int

(const

void

* e1,

const

void

* e2)

void

test1()

;int sz =

sizeof

(arr)

/sizeof

(arr[0]

);qsort

(arr, sz,

sizeof

(arr[0]

), cmp_int)

;int i =0;

for(i =

0; i < sz; i++

)}

浮點數排序

int

cmp_float

(const

void

* e1,

const

void

* e2)

void

test2()

;int sz =

sizeof

(f)/

sizeof

(f[0])

;qsort

(f, sz,

sizeof

(f[0])

, cmp_float)

;int i =0;

for(i =

0; i < sz; i++

)}

結構體排序

struct stu

;int

cmp_stu_by_name

(const

void

* e1,

const

void

* e2)

intcmp_stu_by_age

(const

void

* e1,

const

void

* e2)

void

test3()

,,};

int sz =

sizeof

(s)/

sizeof

(s[0])

;//qsort(s, sz, sizeof(s[0]), cmp_stu_by_name);

qsort

(s, sz,

sizeof

(s[0])

, cmp_stu_by_age)

;}

qsort原理

void

swap

(char

*buff1,

char

*buff2,

int width)

}void

bubble_sort

(void

*base,

int sz,

int width,

int(

*cmp)

(void

*e1,

void

*e2))}

}}void

test()

;int sz =

sizeof

(arr)

/sizeof

(arr[0]

);bubble_sort

(arr, sz,

sizeof

(arr[0]

), cmp_int)

;int i =0;

for(i =

0; i < sz; i++)}

intmain()

C語言 氣泡排序 總結

氣泡排序.cpp 定義控制台應用程式的入口點。include stdafx.h include include define count 6 定義常量 int tmain int argc,tchar argv int i 0 int k 0 int c 0 for i 0 i while 0 c ...

C語言排序演算法 氣泡排序演算法

氣泡排序是一種交換排序,基本思想是 相鄰兩兩比較,若反序則交換。定義交換操作函式 1 void swap int p,int i,intj 2 基本排序演算法 思想 i 0時,p i 依次與後面的元素比較,如果後面的元素小,則交換位置,繼續比較,直到將最小的元素交換到第乙個位置,再從第二個開始與後面...

C語言 氣泡排序演算法

重複地走訪過要排序的數列,一次比較兩個元素,如果他們的順序錯誤就把他們交換過來。走訪數列的工作是重複地進行直到沒有再需要交換,也就是說該數列已經排序完成。這個演算法的名字由來是因為越大的元素會經由交換慢慢 浮 到數列的頂端,故名。void swap int a,int b int main int ...