快速排序

快速排序是冒泡排序的改进。
实现步骤:
找一个基准数 basic ,设置两个指针Low,high。low指向序列的起始位置,high指向序列的末尾。首先用high指向的元素和基准数basic进行比较,如果high指向的元素比basic大,那么high继续向左移动,如果high指向的元素值比basic小,high停止移动,然后让low指向的值赋值为high指向的值,让low指向的元素与basic进行比较,如果low指向的元素的值比basic小,指针前进,如果low指向的元素的值比basic大,停止,high指向的值赋值给low指向的值。重复这个操作,直到low和high相遇,它们指向的位置就是基准数的位置。
找基准数位置的方法:
固定位置选取,随机选取。三分取中。
代码实现:

void sort(int a[],int low,int high)
{
    if(low>=high)
        return ;
    int head=low;
    int tail=high;
    int key=a[low];
    while(head<tail)
    {
        while(head<tail&&a[tail]>=key)
            tail--;
        while(head<tail&&a[head]<=key)
            head++;
        if(head<tail)
        {
            int t;
            t=a[head];
            a[head]=a[tail];
            a[tail]=t;
        }
    }
    a[low]=a[head];
    a[head]=key;
    sort(a,low,head-1);
    sort(a,head+1,high);
}
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值