快速排序算法之我见

   排序算法有很多,常见的选择、冒泡、快排等等。今天着重说一下对了快排的理解。

   快排的核心思想是每次遍历选取一个中间值,这个值可以是第一个元素,也可以是最后一个元素,然后一次遍历的结果是要做到把比它小的元素都放它左边,比他大的元素都放它右边。。太啰嗦了,这个大家都知道。我就不多说了,下面结合实例说一下过程。

举例说明:假如现在有一个数组int[] a = {10,18,2,6,19,7,9}

开始排序:

第一次遍历:

假如选取a[0]也就是10为中间值的话,再取两个下标值left:0和right:6。此时a[left]=10,a[right]=9

a)先从最右边比起,a[right]=9<10,那么a[left]和a[right]互换,left和right下标值不变,数组变成9,18,2,6,19,7,10 ,换完之后立刻用a[left]比,此时left=0,right=6;

 b)此时a[left]=9,a[left]<10,那么left++,变成1,a[left]=18>10,那么立刻让a[left]和a[right]互换位置,也就是a[1]和a[6]互换位置],数组变成9,10,2,6,19,7,18,此时left=1,right=6;

c)再从右边比起,a[right] = 18>10,right--,变成5,a[left] = 7<10,立刻互换a[left]和a[right]的位置,也就是a[1]和a[5]互换位置,数组变成9,7,2,6,19,10,18,此时left=1,right=5;

d)再从左边比起,a[left] = 7<10,left++,变成2,a[left] = 2<10,left++,变成3,a[left] = 6<10,left++,变成4,a[left] = 19>10,此时立刻让a[left]和a[right]互换,也就是a[4]和a[5]互换,数组变成9,7,2,6,10,19,18

d)再从右边比起,a[right]=19>10,right--,变成4,此时left=right,则第一次遍历也就结束了

在递归遍历10左边的数组和10右边的数组

也就是用上面的办法分别遍历9,7,2,6和19,18两个数组,这里就不往下介绍了。

快排好累但是真快。。。。。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值