群裡有同行遇到這樣乙個面試題:有乙個整數構成的列表,需要給這個列表進行從小到大存入到另乙個列表中。
本身排序可以用python的內建函式sort和sorted,但題目的要求是手動實現。
看起來很簡單,實現的發現並不容易,花了半個小時才除錯好。
解題思路:
1.將列表中的第1個元素放入新列表,然後將元素的索引存入索引列表,然後遍歷列表,如有比新列表最後乙個元素小,那做替換動作,索引也要做替換動作。然後將列表第2個元素放入新列表,然後遍歷列表進行第2個元素的比較。。。
直接上**:
def mysort(list):newlist =
indexlist =
for i in range(len(list)):
print("第%d個元素操作:" % (i+1))
flag = 0
for j in range(len(list)):
try:
if flag == 0 and j not in indexlist:
print("將第乙個元素且未存入新列表的元素%d暫存入新列表" % list[j])
print("索引%d暫存入到索引列表" %j)
flag =1
elif list[j] < newlist[i] and flag == 1:
print("遍歷列表,發現新元素%d更小" % list[j])
if j not in indexlist:
print("新元素%d替換暫存元素%d" % (list[j],newlist[i]))
newlist.remove(newlist[i])
indexlist.remove(indexlist[len(indexlist) - 1])
else:
print("元素%d的索引%d已經在新列表中,不能重複存入" % (list[j],j))
except indexerror as f:
pass
print("當前索引列表是:%s" % indexlist)
print("新列表元素是%s:"%newlist)
print("----------------------------------")
return newlist
oldlist = [0,6,100,0,1,5,2,4,1,14,2,-1]
newlist = mysort(oldlist)
print(newlist)
Python如何實現列表排序
python 列表排序 題目 班級同學的成績存放在列表中,list 523,435,712,566,613,675,620,689,643 請將列表內的成績從小到大進行排序。1 氣泡排序 基本思想 相鄰的兩個元素進行比較,然後把較大的元素放到後面 正向排序 在一輪比較完後最大的元素就放在了最後乙個位...
python 列表排序 python列表排序有哪些
python列表排序 1 氣泡排序,是一種簡單的排序演算法,它重複地遍歷要排序的數列,一次比較兩個元素,如果他們的順序錯誤就把他們交換過來 2 插入排序,通過構建有序序列,對於未排序資料,在已排序序列中從後向前掃瞄,找到相應位置並插入。1 氣泡排序 氣泡排序 bubble sort 是一種簡單的排序...
Python要如何實現(列表)排序?
排序,是許多程式語言中經常出現的問題。同樣的,在python中,如何是實現排序呢?以下排序都是基於列表來實現 python中擁有內建函式實現排序,可以直接呼叫它們實現排序功能 python 列表有乙個內建的list.sort 方法可以直接修改列表。還有乙個sorted 內建函式,它會從乙個可迭代物件...