快速排序递归
Posted 大强的小窝
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了快速排序递归相关的知识,希望对你有一定的参考价值。
找男朋友最好找程序员,因为程序员每天都在想我到底错在了哪里。
我真的是太太太南拳北腿、西葫芦掌上明珠。今天上午看一个程序,突然想个人再写一次快速排序算法。分治算法,上次写了一次,写的不够准确,然后照着别人的思路写了一遍。
今天上午大部分时间都在写这个程序,没有解决。不想按着别人的敲一遍了,于是一直debug。蒟蒻。一直没有解决这个问题,下午继续写着。开始怀疑我是不是没有吃这碗饭的能力。
功夫不负有心人啊。终于出来了,真的有些质疑了。
```
#include<stdio.h>
#include<time.h>
#include<stdlib.h>
#define Max 10
void quickSort(int *array, int first, int last);
void print(int array[]);
void swap(int *sw1,int *sw2);
int main()
{
//写一个速排序算法
int array[Max];
srand((unsigned int)(time(NULL)));
int k=10;
while(k--){
for(int i=0;i<Max;i++){
array[i]=rand()%100;
}
//print(array);
quickSort(array,0,Max-1);
print(array);
//int t;
//scanf("%d",&t);
//print(array);
}
}
void print(int array[]){
for(int i=0;i<Max;i++){
printf("%d\t",array[i]);
if(i>0){
if(array[i]<array[i-1])
printf("\nError!\n");
}
if((i+1)%5==0)
printf("\n");
}
printf("\n");
}
void swap(int *sw1,int *sw2){
int temp=*sw1;
*sw1=*sw2;
*sw2=temp;
}
void quickSort(int array[],int first,int last){
if(first>=last){
return;
}
int begin = array[first];
int i=first+1;
int j=last;
while(i<j){
while(j>i&&(array[j]>=begin)){
j--;
}
while(i<j&&(array[i]<begin)){
i++;
}
swap(&array[i],&array[j]); //交换前后的顺序
}
if(array[first]>array[i])
swap(&array[first],&array[i]);
//print(array);
quickSort(array,first,i-1);
//printf("\n------%d--------\n",count);
quickSort(array,i,last);
}
必须加几个slogan.不然怎么能显示出AC格。
雄关漫道真如铁,而今迈步从头越。
路虽远,行则将至。事虽难,做则必达。
以上是关于快速排序递归的主要内容,如果未能解决你的问题,请参考以下文章