个人写的快速排序
#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;
}
本文详细介绍了快速排序算法的实现过程,包括如何通过随机数生成初始数组、使用快速排序函数进行排序,并展示了排序前后数组的变化。代码示例清晰易懂,适合初学者理解和实践。
1440

被折叠的 条评论
为什么被折叠?



