Chinaunix首页 | 论坛 | 博客
  • 博客访问: 381291
  • 博文数量: 83
  • 博客积分: 1650
  • 博客等级: 上尉
  • 技术积分: 861
  • 用 户 组: 普通用户
  • 注册时间: 2010-10-18 18:22
文章分类
文章存档

2021年(1)

2016年(1)

2015年(2)

2014年(3)

2013年(12)

2012年(16)

2011年(18)

2010年(30)

分类: C/C++

2010-10-20 19:12:02

一个快速排序算法 输入10个数
代码如下:
#include
#define N 10
int a[N];
void quickSort(int *arr,int l,int r)
{//此处编写代码实现快速排序
int i,j,x,temp;
if(l {
  i=l;
  j=r;
  x=arr[(l+r)/2];  //以中间元素为轴
  while(1)
  {
   while(i<=r&&arr[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 printf("%3d",a[i]);
}
 main()
{
int i;
for(i=0;i scanf("%d",&a[i]);
 printArray(N);
//调用快速排序函数,对数组中从0到N的元素进行快速排序
quickSort(a,0,N-1);
printArray(N);
printf("\n");
 return 0;
}
阅读(870) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~