• 欢迎访问开心洋葱网站,在线教程,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站,欢迎加入开心洋葱 QQ群
  • 为方便开心洋葱网用户,开心洋葱官网已经开启复制功能!
  • 欢迎访问开心洋葱网站,手机也能访问哦~欢迎加入开心洋葱多维思维学习平台 QQ群
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏开心洋葱吧~~~~~~~~~~~~~!
  • 由于近期流量激增,小站的ECS没能经的起亲们的访问,本站依然没有盈利,如果各位看如果觉着文字不错,还请看官给小站打个赏~~~~~~~~~~~~~!

C++自定义数组长度的快速排序

OC/C/C++ 水墨上仙 2827次浏览

自定义数组长度的快速排序

#include<stdio.h>
#include<stdlib.h>
/*tannnn*/
void Swap(int &a,int &b)
{
int temp=a;a=b;b=temp;
}
int Partition(int a[],int p,int r)
{
    int i=p,j=r+1;
    int x=a[p];
    while(true)
    {
        while(a[++i]<x&&i<r);//从左扫到右,找到第一个大于x的 
        while(a[--j]>x);//从右扫到左,找到第一个小于x的 
        if(i>=j) break;//判断下标i,j,当i大于或等于j时,循环结束。 
        Swap(a[i],a[j]);//交换a[i],a[j] 
    }
    a[p]=a[j];
    a[j]=x;
    return j;
}//此时已a[j]为基点,左边的都小于或等于a[j],右边的都大于或等于。 
void QuickSort(int a[],int p,int r)
{   
    if(p<r){
    int q=Partition(a,p,r);//分割点 
    QuickSort(a,p,q-1);//递归排序 
    QuickSort(a,q+1,r);
    }
}
int main() 
{    int a[]={};
     int i=0,n;
     printf("请输入待排列数组的个数:");
     scanf("%d",&n);
     printf("请输入待排列数组:");
     for(i=0;i<n;i++) scanf("%d",&a[i]);          
     QuickSort(a,0,n-1);
     for(i=0;i<n;i++) printf("%d ",a[i]);
     system("pause");
 }


开心洋葱 , 版权所有丨如未注明 , 均为原创丨未经授权请勿修改 , 转载请注明C++自定义数组长度的快速排序
喜欢 (0)
加载中……