快速排序

//快速排序

//十分重要的算法

//先找到起始数的位置,这个位置将数组分为两部分,第一部分都比起始数小,第二部分都比它大,继而再将每一部分找位置,直到每一部分仅有剩下一个。是采用了一种分治的思想,用递归实现比较方便。找位置,先从右边找第一个比初始位置小的,把小的交换过来,再从左边找比初始位置大的,把大的交换过来,直到首尾指针相同,第一个数的位置就找到了。进而进行递归。

void QuickSort(int arr[],int head,int area)

{

    if(head<area)

    {

        int p=head;

        int q=area;

        int x=arr[p];

        while (p<q) {

            while(p<q && arr[q]>=x)

            {

                q--;

            }

            if(p<q)

            {

                arr[p]=arr[q];

                p++;

            }

            while (p<q &&arr[p]<=x) {

                p++;

            }

            if(p<q)

            {

                arr[q]=arr[p];

                q--;

            }

        }

        arr[p]=x;

        QuickSort(arr, head, p+1);

        QuickSort(arr, q+1, area);

    }


}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值