排序–快速排序

1 篇文章 0 订阅
#include<stdio.h>
#include<stdlib.h>
#define N 1000
void quicksort(int * array,int left,int right);
void quicksort2(int * array,int left,int right);
void main()
{
 //int array[12]={3,2,5,1,3,9,8,7,3,6,10,20};
 
 int array[N]={0};
 for(int i=0;i<N;i++)
 {
  array[i]=10*rand();
 }
 quicksort2(array,0,N);
 for(i=0;i<N;i++)
 {
  printf("%d ",array[i]);
 }
 printf("\n");
 /*for(int i=0;i<100;i++)
 {
  //array[i]=rand();
 }*/
}
//以中间一个数为基准  可以装换成以第一个为基准的  交换一下 就可以了
void quicksort(int * array,int left,int right)
{   int temp=0;
 int privot=array[(left+right)/2];
 int l=left;
 int r=right;
 while(l<r)
 {
  while(array[l]<privot) l++;
  while(array[r]>privot) r--;
 
  if(l>=r) break;
 
  temp=array[l];
  array[l]=array[r];
  array[r]=temp;
 
  if(array[l]==privot) --r;
  if(array[r]==privot) ++l;
 }
 
 if(l==r)
 {
  ++l;
  --r;
 }
 
 if(left<r) quicksort(array,left,r);
 if(right>l) quicksort(array,l,right);
 
}
//以第一个数为基准
void quicksort2(int * array,int left,int right)
{
 int temp=array[left];
 int l=left;
 int r=right;
 while(l<r)
 {
  while(l<r&&array[r]>=temp) --r;
  array[l]=array[r];
  while(l<r&&array[l]<=temp) ++l;
        array[r]=array[l];
 }
 array[l]=temp;
 if(l==r)
 {
   ++l;
   --r;
 }
 if(left<r) quicksort2(array,left,r);
 if(right>l) quicksort2(array,l,right);
}


更多资源  http://www.17xuexiba.com

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值