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

ew3y 9年前發布 | 3K 次閱讀 C/C++ 快速排序 算法

#include <stdlib.h>

include <stdio.h>

static void swap(void x, void y, size_t l) { char a = x, b = y, c; while(l--) { c = a; a++ = b; b++ = c; } }

static void sort(char array, size_t size, int (cmp)(void,void), int begin, int end) { if (end > begin) { void *pivot = array + begin; int l = begin + size; int r = end; while(l < r) { if (cmp(array+l,pivot) <= 0) { l += size; } else { r -= size; swap(array+l, array+r, size); } } l -= size; swap(array+begin, array+l, size); sort(array, size, cmp, begin, l); sort(array, size, cmp, r, end); } }

void qsort(void array, size_t nitems, size_t size, int (cmp)(void,void)) { sort(array, size, cmp, 0, (nitems-1)*size); }

typedef int type;

int type_cmp(void a, void b){ return ((type)a)-((type)b); }

main(){ / simple test case for type=int / int num_list[]={5,4,3,2,1}; int len=sizeof(num_list)/sizeof(type); char *sep=""; int i; qsort(num_list,len,sizeof(type),type_cmp); printf("sorted_num_list={"); for(i=0; i<len; i++){ printf("%s%d",sep,num_list[i]); sep=", "; } printf("};\n"); } </pre>

 本文由用戶 ew3y 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!