JS快速排序详解——递归与非递归

基本介绍

快速排序(quickSort)是基于冒泡排序的一种改进,该排序算法采用了分治的思想,将待排序数组逐步划分两个部分,其中左半部分都要小于右半部分,再将左右部分分别进行快速排序,整个过程可采用递归进行,直到排成一个有序数列。

整体步骤:

① 选取待排序数组中其中一个数作为基数(建议选取第一个数),使flag等于基数的下标,left等于待排序数组第一个数的下标,right等于待排序数组最后一个数的下标。

② 将数组中比基数小的数放到它的左边,比基数大的数放到它的右边。

③ 将基数左边的数组作为待排序数组,重复①步骤

④ 将基数右边的数组作为待排序数组,重复①步骤

⑤ 直到left >= right,代表数组已经划分为最小单位(待排序数组长度小于等于1),即该部分排序完毕,无需继续分割数组。

详细过程:

括号内为待排序数组

① 待排序数组num:{ 9,17,0,6,10,5 }  其中基数为 9 ,即flag = 0,left = 0,right = 5;

定义i = left,j = right,先使 j 不断左移直到num[j]<num[flag],交换这两个数,并使flag = j;

此时 num:{ 5,17,0,6,10,};

再使 i 不断右移直到num[i]>num[flag],交换这两个数 ,并使flag = i;

此时 num:{ 5,9,0,6,10,17 };

不断重复以上步骤,直到i==j时。

此时 num&

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值