快速排序python图解_排序算法:图解快速排序算法--不超过18行代码Python和JavaScript实现快速排序算法...

快速排序有三大要素 分别是

第一:找基准值--key

第二:分区

第三:比较数字大小

先来看下快速排序流程: 基准值key选取了第一个元素78 基准值是可以任意一个元素

因为选择了最左边的数据,那么就从右边开始遍历

经过上一轮变化key变成了78 位置也变了,开始从key的左边遍历,当 i=j的时候,结束遍历,开始分区

分区后,每个区再进行上面的比较

继续分区,直到分区里面只有两个或者3个元素,分区后,每个分区继续比较

现在每个分区已经最小了,获得最后排列的值

Python实现过程(正序),一共13行代码

defquickSortASC(nums,start,end):#start 和 end用于 分区,当start=end的时候不进行递归

if start

i,j=start,end

key=nums[i]while i

j= j-1

#交换

nums[i],nums[j] =nums[j],nums[i]while (i=nums[i]):

i=i+1

#交换

nums[j],nums[i] =nums[i],nums[j]#nums[i] = key

#开始递归

quickSortASC(nums,start,i)

quickSortASC(nums,i+1,end)

调用

if __name__ == "__main__":

num_arr= [23, 34, 544, 234, 54, 554, 78, 656]

quickSortASC(num_arr,0,len(num_arr)-1)print(num_arr)#[23, 34, 54, 78, 234, 544, 554, 656]

JavaScript 实现代码

function swap_arr(arr,i,j){

var tmp = arr[i]

arr[i] = arr[j]

arr[j] = tmp

}

function quickSortASC(nums, start, end) {

if(start < end) {

var i = start

var j = end

var poit = nums[start]

console.log(i, j, poit)

while(i < j) {

while(i

j--

}

swap_arr(nums,i,j)

while(i=nums[i]){

i++

}

swap_arr(nums,i,j)

}

quickSortASC(nums,start,i)

quickSortASC(nums,i+1,end)

}

}

num_arr = [23, 34, 544, 234, 17, 554, 78, 656]

quickSortASC(num_arr,0,7)

console.log(num_arr)//17,23,34,78,234,544,554,656

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值