亚洲一区亚洲二区亚洲三区,国产成人高清在线,久久久精品成人免费看,999久久久免费精品国产牛牛,青草视频在线观看完整版,狠狠夜色午夜久久综合热91,日韩精品视频在线免费观看

應(yīng)用回調(diào)函數(shù)實現(xiàn)冒泡排序既能排序字符串又能排序數(shù) -電腦資料

電腦資料 時間:2019-01-01 我要投稿
【www.ishadingyu.com - 電腦資料】

    引言:通過參考c語言庫函數(shù)qsort:

   

void qsort( void *base, size_t num, size_t width, int (__cdecl *compare )(const void *elem1, const void *elem2 ) );

    完成回調(diào)函數(shù)實現(xiàn)冒泡排序字符串或數(shù)字:

    代碼如下:

   

#include <stdio.h>#include <stdlib.h>#include <string.h>/*函數(shù)功能:以char類型交換兩個元素,大小為size,

應(yīng)用回調(diào)函數(shù)實現(xiàn)冒泡排序既能排序字符串又能排序數(shù)

。*/void swap(char *p1,char *p2,int size){ int i = 0; char tmp = 0; for(i = 0;i<size;i++) { tmp = *(p1+i); *(p1+i) = *(p2+i); *(p2+i) = tmp; }}/*函數(shù)功能:比較整數(shù)的回調(diào)函數(shù)。*/int compare_int(const void *elem1,const void *elem2){ return (*(int *)elem1) - (*(int *)elem2);}/*函數(shù)功能:比較字符串的回調(diào)函數(shù)。*/int compare_str(const void *elem1,const void *elem2){ return strcmp((char *)(*(int *)elem1), (char *)(*(int *)elem2));}/*函數(shù)功能:冒泡排序函數(shù)。*/void bubble_str_int(void *base,int size,int width,int ( *cmp )(const void *elem1, const void *elem2 )){ int i = 0; int j = 0; for(i = 0;i<size-1;i++) { for(j = 0;j<size-i-1;j++) { if(cmp(((char *)base+(j*width)),((char *)base+(j+1)*width))<0) { swap((char *)base+(j*width),(char *)base+(j+1)*width,width); } } }}int main(){ char *arr_str[] = {"ddddd","aaaaa","ccccc","bbbbb","zzzzz"}; int arr_int[] = {1,3,5,7,9,2,4,6,8,10}; int i = 0; int size_int = sizeof(arr_int)/sizeof(arr_int[0]); int size_str = sizeof(arr_str)/sizeof(arr_str[0]); bubble_str_int(arr_int,size_int,sizeof(arr_int[0]),compare_int); printf("bubble_sort int:\n"); for(i = 0;i<size_int;i++) { printf("%d ",arr_int[i]); } printf("\n"); bubble_str_int(arr_str,size_str,sizeof(arr_str[0]),compare_str); printf("bubble_sort string:\n"); for(i = 0;i<size_str;i++) { printf("%s\n",arr_str[i]); } system("pause"); return 0;}

最新文章