个人写的快速排序
#include <stdio.h> void getValues(int* values, int length); void showValues(int* values,int length); void quickSort(int* values, int start, int end); int partition(int* valuse, int start, int end); void exchange(int* a, int* b); int main(int argc, char** argv){ int values[10]; int i; int length = 10; printf("原始数组中数值如下:\n"); getValues(values,length); showValues(values,length); printf("快速排序后数组中数值如下:\n"); quickSort(values,0,length-1); showValues(values,length); return 0; } void getValues(int* values,int length){ //产生随机数,存储在values数组中。 int i; srand ( time() ); for(i=0;i<length;i++){ values[i] = rand()%10; } } //打印出数组中的数值 void showValues(int* values, int length){ int i=0; while( length > 0 ){ printf("values[%d] : %d",i,values[i]); printf("\n"); length--; i++; } } //快速排序函数 void quickSort(int* values, int start, int end){ int position; if(start == end) return; position = partition(values,start,end); if(position == start){ quickSort(values,start+1,end); } else{ quickSort(values,start,position-1); quickSort(values,position,end); } } //将数组分成两部分A、B两段,A段中的数值小于B段中的数值 int partition(int* values, int start, int end){ int i; int j; int tmp; i = start; j = end; while(i<j){ tmp = *(values+i); while(*(values+j)>=tmp)j--; if(i<j) exchange(values+i,values+j); while(*(values+i)<tmp)i++; if(i<j) exchange(values+i,values+j); } return i; } //交换指针对应的两个数值 void exchange(int* a, int* b){ int tmp; tmp = *a; *a = *b; *b = tmp; }