Python递归来实现快速排序算法

 代码

def quick_sort(arr):
  if len(arr) <= 1:
    return arr
  pivot = arr[len(arr) // 2]
  left = [x for x in arr if x < pivot] 
  middle = [x for x in arr if x == pivot] 
  right = [x for x in arr if x > pivot]
  return quick_sort(left) + middle + quick_sort(right)

print(quick_sort([3,6,8,10,1,2,1]))

快速排序算法是一种基于分治的排序算法,它的基本思想是将数组分成两个子数组,然后递归地对这两个子数组进行排序。

上面的代码中,首先使用递归函数 quick_sort() 对数组进行排序。如果数组的长度小于等于 1,则直接返回数组。否则,选择数组的中间元素作为枢轴,并将数组分成三个部分:小于枢轴的元素、等于枢轴的元素、大于枢轴的元素。最后,使用递归调用将左右两个子数组排序,并将结果拼接起来。

添加注释

def quick_sort(arr):
  # 基线条件:如果数组的长度小于等于 1,则直接返回数组
  if len(arr) <= 1:
    return arr
  
  # 选择枢轴,并将数组分成三个部分
  pivot = arr[len(arr) // 2]  # 选择数组中间元素作为枢轴
  left = [x for x in arr if x < pivot] # 小于枢轴的元素 
  middle = [x for x in arr if x == pivot] # 等于枢轴的元素 
  right = [x for x in arr if x > pivot]  # 大于枢轴的元素
  
  # 递归调用将左右两个子数组排序,并将结果拼接起来
  return quick_sort(left) + middle + quick_sort(right)

# 测试程序
print(quick_sort([3,6,8,10,1,2,1]))

 

 

 

 

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇