快速排序算法程序可以写得千奇百怪,但最易理解的个人认为仍是下面的:
#include<stdio.h> #include<time.h> #include<stdlib.h> void swap(int *a ,int *b) { int t = *a; *a = *b; *b = t; } int partition(int array[],int l,int r) { int pivot = array[r]; int curpos = l; int j ; for( j = l;j<r;j++) { if(array[j] < pivot) { swap(&array[j],&array[curpos]); curpos++; } } swap(&array[r],&array[curpos]); return curpos; } void quicksort(int array[],int l,int r) { int interval; if(l < r) { interval = partition(array,l,r); quicksort(array,l,interval-1); quicksort(array,interval+1,r); } } int test_quicksort() { int number = 10000000; printf("hehe:%d\n",number); int *array = (int*) malloc(number*sizeof(int)); if (array == NULL) { printf("malloc failed\n"); return -1; } int i; printf("----------------------------------------before quick sort--------------\n"); srand(time(NULL)); for(i = 0;i<number;i++) { array[i] = rand()%100000000; //printf("\tarray[%d] = %d\n",i,array[i]); } printf("----------------------------------------after quick sort-----------------\n"); quicksort(array,0,number-1); for(i = 0;i<number;i++) { //printf("\tarray[%d] = %d\n",i,array[i]); } printf("ok\n"); return 0; } int main() { test_quicksort(); }
没有注释,也懂吗?
最易理解的qsort排序算法
时间: 2024-10-07 18:27:26