python实现列表排序_python实现列表的排序

群里有同行遇到这样一个面试题:有一个整数构成的列表,需要给这个列表进行从小到大存入到另一个列表中。

本身排序可以用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])

newlist.append(list[j])

print("索引%d暂存入到索引列表" %j)

indexlist.append(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])

newlist.append(list[j])

indexlist.remove(indexlist[len(indexlist) - 1])

indexlist.append(j)

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)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值