快速排序算法思想及其c语言实现

算法思想:

快速排序算法主要采用的是分而治之的算法思想,在每次进行快速排序的过程中,都将待排序的数字分为大于枢轴值的部分和小于枢轴值的部分。然后分别对大于部分和小于部分进行快速排序即可,知道待排序的数据元素的个数为1为止,即当low==high时停止。

枢轴值的获取:

枢轴值的获取,以及如何将待排序数据元素中大于枢轴值的元素和小于枢轴值的元素分居枢轴值的两边,是快速排序的关键。

1:对于枢轴值的选取我们可以直接选用第一个元素作为枢轴元,也可以通过随机选取的方式进行选取。

2:对于如何将待排序数据元素中大于枢轴值的元素和小于枢轴值的元素分居枢轴值的两边,我们采用左右指针的方法。

左右指针的方法

 1:选取一个关键字(key)作为枢轴,一般取整组记录的第一个数/最后一个,这里采用选取序列最后一个数为枢轴。
            2: 设置两个变量left = 0;right = N - 1;
            3:从left一直向后走,直到找到一个大于key的值,right从后至前,直至找到一个小于key的值,然后交换这两个数。
            4:重复第三步,一直往后找,直到left和right相遇,这时将key放置left的位置即可。
 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值