python3排序算法,快速排序算法python代码

  python3排序算法,快速排序算法python代码

  归并排序动态图如下:

  归并排序的思路就是分治的思想,具体思路如下:

  1、将一串数分为两部分,对两部分分别排序,然后将两部分已经有序的数再合到一起

  2、对一中分成的每一部分,递归的进行上述一的操作具体代码实现如下:

  定义合并排序(数据):

  如果len(数据)=1:

  返回数据

  mid=len(datas)//2

  left=merge_sort(datas[:mid])

  right=merge_sort(datas[mid:])

  返回合并(左,右)

  定义合并(左、右):

  数据=[]

  i=0

  j=0

  而我len(左)和j len(右):

  if left[i] right[j]:

  数据追加(左[我])

  i=1

  否则:

  数据追加(右[j])

  j=1

  如果我借(左):

  对于范围内的索引(我,兰(左)):

  数据追加(左[索引])

  如果j len(右):

  对于范围内的索引(j,len(右)):

  数据追加(右[索引])

  打印(-)

  打印(左:,左)

  打印(右:,右)

  打印("数据:",数据)

  打印(-)

  返回数据

  if __name__==__main__ :

  数据=[10,9,8,7,6,5,4,3,2,1,0]

  datas=merge_sort(数据)

  打印(经过归并排序后结果:,数据)执行结果如下:

  -

  左:[10]

  右:[9]

  数据:[9,10]

  -

  -

  左:[7]

  右:[6]

  数据:[6,7]

  -

  -

  左:[8]

  右:[6,7]

  数据:[6,7,8]

  -

  -

  左:[9,10]

  右:[6,7,8]

  数据:[6,7,8,9,10]

  -

  -

  左:[4]

  右:[3]

  数据:[3,4]

  -

  -

  左:[5]

  右:[3,4]

  数据:[3,4,5]

  -

  -

  左:[1]

  右:[0]

  数据:[0,1]

  -

  -

  左:[2]

  右:[0,1]

  数据:[0,1,2]

  -

  -

  左:[3,4,5]

  右:[0,1,2]

  数据:[0,1,2,3,4,5]

  -

  -

  左:[6,7,8,9,10]

  右:[0,1,2,3,4,5]

  数据:[0,1,2,3,4,5,6,7,8,9,10]

  -

  经过归并排序后结果: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]最好的情况下

  定义合并排序(数据):

  如果len(数据)=1:

  返回数据

  mid=len(datas)//2

  left=merge_sort(datas[:mid])

  right=merge_sort(datas[mid:])

  返回合并(左,右)

  定义合并(左、右):

  数据=[]

  i=0

  j=0

  而我len(左)和j len(右):

  if left[i] right[j]:

  数据追加(左[我])

  i=1

  否则:

  数据追加(右[j])

  j=1

  如果我借(左):

  对于范围内的索引(我,兰(左)):

  数据追加(左[索引])

  如果j len(右):

  对于范围内的索引(j,len(右)):

  数据追加(右[索引])

  打印(-)

  打印(左:,左)

  打印(右:,右)

  打印("数据:",数据)

  打印(-)

  返回数据

  if __name__==__main__ :

  数据=[0,1,2,3,4,5,6,7,8,9,10]

  datas=merge_sort(数据)

  打印(经过归并排序后结果:,数据)执行结果如下:

  -

  左侧:[0]

  右:[1]

  数据:[0,1]

  -

  -

  左:[3]

  右:[4]

  数据:[3,4]

  -

  -

  左:[2]

  右:[3,4]

  数据:[2,3,4]

  -

  -

  左:[0,1]

  右:[2,3,4]

  数据:[0,1,2,3,4]

  -

  -

  左:[6]

  右:[7]

  数据:[6,7]

  -

  -

  左:[5]

  右:[6,7]

  数据:[5,6,7]

  -

  -

  左:[9]

  右:[10]

  数据:[9,10]

  -

  -

  左:[8]

  右:[9,10]

  数据:[8,9,10]

  -

  -

  左:[5,6,7]

  右:[8,9,10]

  数据:[5,6,7,8,9,10]

  -

  -

  左:[0,1,2,3,4]

  右:[5,6,7,8,9,10]

  数据:[0,1,2,3,4,5,6,7,8,9,10]

  -

  经过归并排序后结果: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: