日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

php和python的选择排序算法,图文讲解选择排序算法的原理及在Python中的实现

發布時間:2025/3/20 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 php和python的选择排序算法,图文讲解选择排序算法的原理及在Python中的实现 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

def sort_choice(numbers, max_to_min=True):

"""

我這沒有按照標準的選擇排序,假設列表長度為n,思路如下:

1、獲取最大值x,將x移動到列最后。[n1, n2, n3, ... nn]

2、將x追加到排序結果[n1, n3, ... nn, n2]

3、獲取排序后n-1個元素[n1, n3, ... nn],重復第一步,重復n-1次。

max_to_min是指從大到小排序,默認為true;否則從小到大排序。

對[8, 4, 1, 0, 9]排序,大致流程如下:

sorted_numbers = []

[8, 4, 1, 0, 9], sorted_numbers = [9]

[4, 1, 0, 8], sorted_numbers = [9, 8]

[1, 0, 4], sorted_numbers = [9, 8, 4]

[0, 1], sorted_numbers = [9, 8, 4, 1]

[0], sorted_numbers = [9, 8, 4, 1, 0]

"""

if len(numbers) <= 1:

return numbers

sorted_list = []

index = 0

for i in xrange(len(numbers) - index):

left_numbers = _get_left_numbers(numbers, max_to_min)

numbers = left_numbers[:-1]

sorted_list.append(left_numbers[-1])

index += 1

return sorted_list

def _get_left_numbers(numbers, get_max=True):

'''

獲取最大值或者最小值x,并且將x抽取出來,置于列表最后.

Ex: get_max=True, [1, 4, 3] ? [1, 3, 4]

get_max=False, [1, 4, 3] ? [4, 3 ,1]

'''

max_index = 0

for i, num in enumerate(numbers):

if get_max:

if num > numbers[max_index]:

max_index = i

else:

if num < numbers[max_index]:

max_index = i

numbers = numbers[:max_index] + numbers[max_index + 1:] + [numbers[max_index]]

return numbers

測試一下:

>>> get_left_numbers([0, 4, 0, 31, 9, 19, 89,67], get_max=True)

[0, 4, 0, 31, 9, 19, 67, 89]

>>> get_left_numbers([0, 4, 0, 31, 9, 19, 89,67], get_max=False)

[4, 0, 31, 9, 19, 89, 67, 0]

>>> sort_choice([0, 4, 0, 31, 9, 19, 89,67], max_to_min=False)

[0, 0, 4, 9, 19, 31, 67, 89]

>>> sort_choice([0, 4, 0, 31, 9, 19, 89,67], max_to_min=True)

[89, 67, 31, 19, 9, 4, 0, 0]

本文原創發布php中文網,轉載請注明出處,感謝您的尊重!

相關文章

相關視頻

總結

以上是生活随笔為你收集整理的php和python的选择排序算法,图文讲解选择排序算法的原理及在Python中的实现的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。