楼下的几个回答我怎么看也不是快速排序,所以我做了一个用快速排序法排序的程序
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#define LEN 50
//快速排序(升)
void quicksup(int *arr,int low,int high)
{
int temp,l,r;
if(low<high)
{
l=low;
r=high;
temp=arr[low];
while(low<high)
{
while(low<high&&arr[high]>=temp)
high--;
if(low<high)
arr[low]=arr[high];
while(low<high&&arr[low]<=temp)
low++;
if(low<high)
arr[high]=arr[low];
}
arr[low]=temp;
quicksup(arr,l,low-1);
quicksup(arr,low+1,r);
}
}
//快速排序(降)
void quicksdown(int *arr,int low,int high)
{
int temp,l,r;
if(low<high)
{
l=low;
r=high;
temp=arr[low];
while(low<high)
{
while(low<high&&arr[high]<=temp)
high--;
if(high==LEN)
high--;
if(low<high)
arr[low]=arr[high];
while(low<high&&arr[low]>=temp)
low++;
if(low<high)
arr[high]=arr[low];
}
arr[low]=temp;
quicksdown(arr,l,low-1);
quicksdown(arr,low+1,r);
}
}
//初始化数组
void init(int *arr,int len)
{
int i;
for(i=0;i<len;i++)
{
arr[i]=rand()%1000;
}
}
//打印数组元素
void print(int *arr,int len)
{
int i;
printf("\n ");
for(i=0;i<len;i++)
printf("%4d ",arr[i]);
printf("\n");
}
int main()
{
int arr[LEN];
srand((unsigned)time(NULL));
init(arr,LEN);
printf("排序前:");
print(arr,LEN);
quicksup(arr,0,LEN);
printf("排序后(升):");
print(arr,LEN);
quicksdown(arr,0,LEN);
printf("排序后(降):");
print(arr,LEN);
return 0;
}
望采纳
本回答被提问者采纳