python手寫選擇排序方式(不用sort)
更新時間:2024年02月23日 09:27:41 作者:_Phoebe__
這篇文章主要介紹了python手寫選擇排序方式(不用sort),具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
python手寫選擇排序
函數(shù)mysort(alist)用于計算包含數(shù)字的列表的排序(包括升序和降序。不能使用python中的函數(shù)sort或sorted)。
import random def section_sort1(alist): n = len(alist) # 定義外圍循環(huán)次數(shù) for j in range(n - 1): # 定義min_index最小值的索引為j,目的找出最小值 min_index = j # cur下標(biāo)移動的范圍,比較次數(shù)的范圍限定 for i in range(j + 1, n): # 元素比較,找出最小的值對應(yīng)的索引 if alist[i] < alist[min_index]: # 移動到最小元素的位置 min_index = i # 保證最新的min_index不在無序隊列的首位,那么就將它和無序隊列的首位替換 if min_index != j: alist[j], alist[min_index] = alist[min_index], alist[j] def section_sort2(alist): n = len(alist) # 定義外圍循環(huán)次數(shù) for j in range(n - 1): # 定義min_index最小值的索引為j,目的找出最小值 min_index = j # cur下標(biāo)移動的范圍,比較次數(shù)的范圍限定 for i in range(j + 1, n): # 元素比較,找出最小的值對應(yīng)的索引 if alist[i] > alist[min_index]: # 移動到最小元素的位置 min_index = i # 保證最新的min_index不在無序隊列的首位,那么就將它和無序隊列的首位替換 if min_index != j: alist[j], alist[min_index] = alist[min_index], alist[j] n=int(input()) alist=[random.randint(0,100)for i in range(n)] print(alist) section_sort1(alist) print("排序后1:",alist) section_sort2(alist) print("排序后2:",alist)
Python不用sort對列表排序
有道面試題
L = [2,3,5,4,9,6,8,7,1],從小到大排序,不許用sort,輸出[1,2,3,4,5,6,7,8,9]
如果用sort很簡單,如果不用sort的話,處理起來就麻煩些
處理思路大致
創(chuàng)建一個空列表,遍歷原先列表,找出最小值,放到空列表中,原列表彈出該值,直到無值。
有了上面的思路,就好處理了:
>>> L = [2,3,5,4,9,6,8,7,1] >>> T = [] >>> while len(L) > 0: ... m = min(L) ... L.remove(m) ... T.append(m) >>> T [1, 2, 3, 4, 5, 6, 7, 8, 9]
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
python實現(xiàn)linux下使用xcopy的方法
這篇文章主要介紹了python實現(xiàn)linux下使用xcopy的方法,可實現(xiàn)模仿windows下的xcopy命令功能,需要的朋友可以參考下2015-06-06