快速排序算法

我理解的快速排序,大致的思路就是

在你排序的这一组数中,先确定一个基准数,然后将这一组数中  小于基准数的  放在左边,大于基准数的  放在右边

然后左边和右边在重复上一操作,就完成了。

举个例子  6  2  1  7  9  5  4  3 10  8 进行快排

就以6为基准点  现在说两种方法:

1)就是直接从头至尾开始找 找到比6小的,放在左边,比6大放在右边

原数据   6  2  1  7  9  5  4  3 10  8

第一遍   2 1 5 4 3   ||   6    ||  7 9 10 8

然后左边以2为基准点   右边以7为基准点

第二遍   1  ||  2 ||  5  4  3   ||  6   ||   7  ||  9  10  8     

第三遍   1  ||  2 ||   4  3  ||   5   ||  6   ||   7  ||  8  || 9  ||  10     

第四遍   1  ||  2 ||  3 ||  4 ||   5   ||  6   ||   7  ||  8  || 9  ||  10   

这种思路比较简单,但是效率较低

2)第二种是 从两端开始 先从右开始移动找一个比6小的数 ,然后再从左边移动找一个比6大的数,然后交换位置,

然后再重复上一操作,直到左边右边相遇,基准数与左边相遇前的位置互换,结束一轮,然后再将基准数6左右两侧的数据 按上述方法操作。

原数据   6   2  1  7  9  5  4  3 10  8

第一遍   6   2  1  3  9  5  4  7  10  8

第二遍   6   2  1  3  9  7  10  8

第三遍     2  1  3  4   9  7  10  8

然后再对基准数左右两侧的数据进行操作

            5   2   1  3  4        6            9  7  10  8

第四遍  2   1  3  5        6            9  7   8   10

第五遍  2   1   5        6             7   9   10

第五遍  2   3  4  5        6            7  8   9   10

 

以上就是我理解的快速排序,第一次发帖,也许讲的不是很清楚,希望大家多提意见,明天再给大家更新用js代码怎么实现快速排序。

大家也可以关注我的微信公众号  :  名称:前端知识科普    微信号:dataPopularization

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值