C語言 模擬實現通用氣泡排序

2021-08-02 01:23:16 字數 1858 閱讀 2630

函式原型:void qsort( void *base, size_tnum, size_twidth, int (__cdecl *compare )(const void *elem1, const void *elem2 ) )

以上原型是msdn中查詢出的qsort函式,共有四個引數;

各個引數:

1、base —— 待排序陣列首位址(int arr[10])

2、num —— 陣列中待排序元素的個數(int num = sizeof(arr)/sizeof(arr[0]))

3、width—— 各元素的占用空間大小 (

sizeof

(num[0])

)4、compare—— 指向函式的指標,用於確定排序的順序 

實際應用:

1,普通氣泡排序:

void bubble(int arr, int sz)

} }}int main()

; int sz = sizeof(arr) / sizeof(arr[0]);

bubble(arr, sz);

int i = 0;

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

return 0;

}

2,對整型排序:

int cmp_int(const void*e1, const void*e2)

int main()

; int sz = sizeof(arr) / sizeof(arr[0]);

qsort(arr, sz,sizeof(arr[0]),cmp_int);

int i = 0;

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

printf("\n");

return 0;

}

3,對字串排序:

struct s

;int cmp_name(const void*e1, const void*e2)

int main()

, , };

int sz = sizeof(arr) / sizeof(arr[0]);

bubble_sort(arr, sz, sizeof(arr[0]), cmp_name); //僅對name進行了排序

return 0;

}

4,qsort的實現以及對結構體型別進行排序
struct s

;int cmp_age(const void*e1, const void*e2)

int cmp_name(const void*e1, const void*e2)

void _swap(char* buf1, char*buf2, int width)

}void bubble_sort(void* base,int sz,int width,int (*cmp)(const void*,const void*)) }}

int main()

, , };

int sz = sizeof(arr) / sizeof(arr[0]);

bubble_sort(arr, sz, sizeof(arr[0]), cmp_age);

return 0;

}

C 參考庫函式qsort 模擬實現通用氣泡排序

相信大家對氣泡排序一定不陌生吧,作為一種經典的排序方法,它的基本思想是 以公升序為例 將相鄰的兩個數進行比較,若前乙個數比後乙個數大,則交換它們的順序,這樣一趟下來,最大的數就跑到了最後一位,的二趟還是一樣的方法,最大的數不參與交換,這樣進行n 1趟後,我們就實現了排序 void bubblesor...

C語言 模擬實現memcpy

模擬實現記憶體拷貝函式memcpy 該特點與strcpy 比較就是不管是不是string型別均可以比較,只是單純記憶體的比較。void my memcpy void p1,const void p2,size t count char dest char p1 char src char p2 si...

C語言模擬實現strncpy strcat

模擬實現strncpy 先演示一下strncpy的效果 如下 include include void main void 執行結果 通過以上演示可以看出,strncpy實現的是用乙個固定的字串去替換原字串中的某段字元,可以設定乙個迴圈,來實現字元的替換,如果它只有乙個字元要替換,則迴圈執行一次,設...