经典算法-快速排序算法
时间:2010-10-20 来源:1987hanen
一个快速排序算法 输入10个数
代码如下:
#include <stdio.h>
#define N 10 int a[N];
void quickSort(int *arr,int l,int r)
{//此处编写代码实现快速排序
int i,j,x,temp;
if(l<r)
{
i=l;
j=r;
x=arr[(l+r)/2]; //以中间元素为轴
while(1)
{
while(i<=r&&arr[i]<x)i++;
while(j>=0&&arr[j]>x)j--;
if(i>=j) //相遇则跳出
break;
else
{
temp=arr[i];arr[i]=arr[j];arr[j]=temp; //交换
}
}
qsort(arr,l,i-1); //对左半部分进行快排
qsort(arr,j+1,r); //对右半部分进行快排
}
}
void printArray(int N)
{//此处编写代码打印数组
int i=0;
for(;i<N;i++)
printf("%3d",a[i]);
}
main()
{
int i;
for(i=0;i<N;i++)
scanf("%d",&a[i]); printArray(N);
//调用快速排序函数,对数组中从0到N的元素进行快速排序
quickSort(a,0,N-1);
printArray(N); printf("\n");
return 0;
}
#include <stdio.h>
#define N 10 int a[N];
void quickSort(int *arr,int l,int r)
{//此处编写代码实现快速排序
int i,j,x,temp;
if(l<r)
{
i=l;
j=r;
x=arr[(l+r)/2]; //以中间元素为轴
while(1)
{
while(i<=r&&arr[i]<x)i++;
while(j>=0&&arr[j]>x)j--;
if(i>=j) //相遇则跳出
break;
else
{
temp=arr[i];arr[i]=arr[j];arr[j]=temp; //交换
}
}
qsort(arr,l,i-1); //对左半部分进行快排
qsort(arr,j+1,r); //对右半部分进行快排
}
}
void printArray(int N)
{//此处编写代码打印数组
int i=0;
for(;i<N;i++)
printf("%3d",a[i]);
}
main()
{
int i;
for(i=0;i<N;i++)
scanf("%d",&a[i]); printArray(N);
//调用快速排序函数,对数组中从0到N的元素进行快速排序
quickSort(a,0,N-1);
printArray(N); printf("\n");
return 0;
}
相关阅读 更多 +