函式原型: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實現的是用乙個固定的字串去替換原字串中的某段字元,可以設定乙個迴圈,來實現字元的替換,如果它只有乙個字元要替換,則迴圈執行一次,設...