博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
选择排序
阅读量:4092 次
发布时间:2019-05-25

本文共 791 字,大约阅读时间需要 2 分钟。

2.选择排序

第一次需要检查n个元素,但后检查的元素数依次为n-1,n-2,…,2和1。平均每次检查的元素数为1/2 X n,因此运行时间为O(n X 1/2 X n)。但大O表示法省略诸如1/2这样的常数,因此简单地写作O(n X n)或O(n^2)。选择排序是一种灵巧的算法,但其速度不是很快。

def findSmallest(my_list):    smallest = my_list[0]   #存储列表中最小的值    smallest_index = 0      #存储最小元素的索引    for i in range(1,len(my_list)):        if my_list[i] < smallest:            smallest = my_list[i]            smallest_index = i    return smallest_indexdef selectionSort(my_list):   #对列表元素进行排序    new_list = []    for i in range(len(my_list)):        smallest = findSmallest(my_list)         #找出列表中最小的元素        new_list.append(my_list.pop(smallest))   #将最小的元素加入到新列表中    return new_listprint(selectionSort([8,2,7,3,9,1,6]))

运行结果:

[1, 2, 3, 6, 7, 8, 9]

小结:

  • 需要存储多个元素时,可以使用数组或链表
  • 数组的元素都在一起
  • 链表的元素是分开的,其中每个元素都存储了下一个元素的地址
  • 数组的读取速度很快
  • 链表的插入和删除速度很快

转载地址:http://lncii.baihongyu.com/

你可能感兴趣的文章
@程序员:原来相亲失败都是因为这些,我的天呐!
查看>>
学会这门编程知识,可能决定你能进什么样的企业
查看>>
程序员职业发展之路:三年升高工,七年做架构,十年送外卖
查看>>
技术不错的程序员,为何面试却“屡战屡败”
查看>>
五年外包,我沦为过期甩卖的商品
查看>>
苹果 5G 芯片“难产”!
查看>>
唏嘘!2019榜单出炉:铁打的Python连续3年第一,它居然跌出前十?
查看>>
程序员面试必备小技能,你get了吗?
查看>>
只因写了一段爬虫,公司200多人被抓!
查看>>
程序员的爱情都是代码给的
查看>>
吃惊!C 语言竟然被 80 行 Haskell 打败了?
查看>>
程序员:站在“自学”鄙视链顶端的王者
查看>>
刚刚!10万+程序员参与,行,这个1024彻底玩大了!
查看>>
牛!GitHub标星Python项目实战,附赠:学习图谱
查看>>
2019年程序员薪资报告,网友:年薪20万只是起薪?
查看>>
为什么我害怕数据结构学得好的程序员?
查看>>
程序员自学到底有没有用?网友们吵翻了...
查看>>
程序员 | 面试的我 VS 真实的我
查看>>
刚刚,Python内幕被爆出!老码农:没控制住,心态已崩!
查看>>
老司机带你用Python实现深度学习
查看>>