码迷,mamicode.com
首页 > 编程语言 > 详细

python数据结构与算法(12)

时间:2018-11-29 17:57:49      阅读:192      评论:0      收藏:0      [点我收藏+]

标签:ali   ble   过程   log   现在   遍历   for   搜索   开始   

排序与搜索
排序算法(英语:Sorting algorithm)是?种能将?串数据依照特定顺序进? 排列的?种算法。
排序算法的稳定性
稳定性:稳定排序算法会让原本有相等键值的纪录维持相对次序。也就是如 果?个排序算法是稳定的,当有两个相等键值的纪录R和S,且在原本的列表 中R出现在S之前,在排序过的列表中R也将会是在S之前。
当相等的元素是?法分辨的,?如像是整数,稳定性并不是?个问题。然 ?,假设以下的数对将要以他们的第?个数字来排序。
(4, 1) (3, 1) (3, 7)(5, 6)
在这个状况下,有可能产?两种不同的结果,?个是让相等键值的纪录维持 相对的次序,?另外?个则没有:
(3, 1) (3, 7) (4, 1) (5, 6) (维持次序) (3, 7) (3, 1) (4, 1) (5, 6) (次序被改变)
不稳定排序算法可能会在相等的键值中改变纪录的相对次序,但是稳定排序 算法从来不会如此。不稳定排序算法可以被特别地实现为稳定。作这件事情 的?个?式是??扩充键值的?较,如此在其他??相同键值的两个对象间 之?较,(?如上?的?较中加?第?个标准:第?个键值的??)就会被 决定使?在原先数据次序中的条?,当作?个同分决赛。然?,要记住这种 次序通常牵涉到额外的空间负担。
排序与搜索

冒泡排序
冒泡排序(英语:Bubble Sort)是?种简单的排序算法。它重复地遍历要排 序的数列,?次?较两个元素,如果他们的顺序错误就把他们交换过来。遍 历数列的?作是重复地进?直到没有再需要交换,也就是说该数列已经排序 完成。这个算法的名字由来是因为越?的元素会经由交换慢慢“浮”到数列的 顶端。
冒泡排序算法的运作如下:
?较相邻的元素。如果第?个?第?个?(升序),就交换他们两个。 对每?对相邻元素作同样的?作,从开始第?对到结尾的最后?对。这 步做完后,最后的元素会是最?的数。 针对所有的元素重复以上的步骤,除了最后?个。 持续每次对越来越少的元素重复上?的步骤,直到没有任何?对数字需 要?较。
冒泡排序的分析
交换过程图示(第?次):
技术分享图片


def        bubble_sort(alist):                                for        j        in        range(len(alist)-1,0,-1):                                                                #        j表示每次遍历需要?较的次数,是逐渐减?的

        for        i        in        range(j):                                                                                                if        alist[i]        >        alist[i+1]:                                                                                                                                alist[i],        alist[i+1]        =        alist[i+1],        alist[i]
li        =        [54,26,93,17,77,31,44,55,20] bubble_sort(li) print(li)

时间复杂度
最优时间复杂度:O(n) (表示遍历?次发现没有任何可以交换的元素, 排序结束。) 最坏时间复杂度:O(n ) 稳定性:稳定
冒泡排序的演示
技术分享图片

python数据结构与算法(12)

标签:ali   ble   过程   log   现在   遍历   for   搜索   开始   

原文地址:http://blog.51cto.com/13517854/2323706

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!