我理解的快速排序,大致的思路就是
在你排序的这一组数中,先确定一个基准数,然后将这一组数中 小于基准数的 放在左边,大于基准数的 放在右边,
然后左边和右边在重复上一操作,就完成了。
举个例子 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 4 5 9 7 10 8
第三遍 5 2 1 3 4 6 9 7 10 8
然后再对基准数左右两侧的数据进行操作
5 2 1 3 4 6 9 7 10 8
第四遍 4 2 1 3 5 6 9 7 8 10
第五遍 3 2 1 4 5 6 8 7 9 10
第五遍 1 2 3 4 5 6 7 8 9 10
以上就是我理解的快速排序,第一次发帖,也许讲的不是很清楚,希望大家多提意见,明天再给大家更新用js代码怎么实现快速排序。
大家也可以关注我的微信公众号 : 名称:前端知识科普 微信号:dataPopularization