排序入门--快排

快排

代码先放在这 下次看了再该

#include<iostream>
#include<algorithm>
using namespace std;
void q_sort(inta[],int num)
{
int i=0,j=num-1;
 
inttem=a[0];
if(num>1)
{
while(i<j)
{
while(i<j&&a[j]>tem)
j--;
if(i<j)
a[i]=a[j];
while(i<j&&a[i]<tem)
i++;
if(i<j)
a[j]=a[i];
a[i]=tem;
}
q_sort(a,i);
q_sort(a+1+i,num-1-i);
}
}
int main()
{
inti,a[1000],n;
cin>>n;
 
for(i=0;i<n;i++)
cin>>a[i];
    q_sort(a,n);
for(i=0;i<n;i++)
cout<<a[i]<<"";
return0;
}


 

 

 

 

#include<cstdio>
using namespace std;
inta[100001],z,x,n,m;
 
void pai(int l,intr)
{
    int i,j,mid,p;
    i=l;j=r;
    mid=a[(l+r)/2];
 
    do
    {
        while (a[i]<mid)
          i++;
        while (a[j]>mid) 
          j--;
        if (i<=j)  {
            p=a[i];a[i]=a[j];a[j]=p;
            i++;j--;
                    }
 
    } while(i<=j);
 
    if (i<r) pai(i,r);
    if (l<j) pai(l,j);
 
}
 
int main()
{
    scanf("%d",&z);
 
    for (int i=1;i<=z;i++)
      scanf("%d",&a[i]);
 
    pai(1,z);
 
    for (int i=1;i<=z;i++)
      printf("%d ",a[i]);
 
    return 0; 
 
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值