快速排序非挖坑法,c语言实现

#include 
#include 
//快速排序递归实现
void QuickSort(int a[],int left,int right){
int l=left;
int r=right+1;//加1是因为后面先执行减1操作
int x=a[left];
if(leftx);//不可能越界,至少会和x相等
   if(l>=r)   break;//若左边l小于右边r,进行交换,否则一轮交换结束
    int y=a[l];
    a[l]=a[r];
    a[r]=y;
   }
  a[left]=a[r];//此时啊[r]一定小于或等于x,a[r]
  a[r]=x;//与a[left]的值进行互换
  QuickSort(a,left,r-1);//左部分进行递归
  QuickSort(a,r+1,right);//右部分进行递归
   }
}

int main()
{//测试部分
  int a[]={1,4,6,9,45,42,46,45,78,468,784};
  int i;
  for(i=0;i<11;i++){
     printf("%d\n",a[i]);
  }
  QuickSort( a,0,10);
  for(i=0;i<11;i++){
     printf("%d\n",a[i]);
  }

    return 0;
}

 

转载于:https://my.oschina.net/tanyonghu/blog/689388

你可能感兴趣的:(c/c++)