zoukankan      html  css  js  c++  java
  • 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)
    
  • 相关阅读:
    史上最全的浏览器 CSS & JS Hack 手册
    JavaScript1.6数组新特性和JQuery的几个工具方法
    用jquery循环map
    javascript强大的日期函数
    用 javascript 判断 IE 版本号
    常见排序算法基于JS的实现
    JavaScript中callee,caller,argument的理解
    apply()方法和call()方法
    虽然我们可能不想对元素应用3D变换,可我们一样可以开启3D引擎
    在移动端上加上代码,让字体变得平滑
  • 原文地址:https://www.cnblogs.com/Sandy-1128/p/python-sandy-0426.html
Copyright © 2011-2022 走看看