经典之python 排序算法

冒泡排序
算法思想:

1、相邻元素对比,如果前面元素比后面的大,进行交换,直至最后一个元素,一轮结束之后,最后一个元素为最大值;
2、后一轮进行的列表数量比前一轮少一个;
3、反复进行上面两步,直至没有元素进行对比为止.

复杂度:

冒泡排序的平均复杂度为O(n2),当原列表为正序排列时,复杂度为O(n),为倒序排列时,复杂度为O(n2),比较次数为n(n-1)/2,关键字移动次数为n(n-1)/4

稳定性:

稳定。列表中每次交换是相邻元素之间的交换,如果相邻的两个元素相等,不会出现交换情况,因而相同元素的前后顺序没有发生改变,故而冒泡排序为稳定排序算法

代码:

注:如果你对python感兴趣,我这有个学习Python基地,里面有很多学习资料,感兴趣的+Q群:895817687
def bubble_sort(array):
for i in range(len(array) - 1): # 这个循环负责设置冒泡排序进行的次数
for j in range(len(array) - i - 1):
if array[j] > array[j + 1]:
array[j], array[j + 1] = array[j + 1], array[j] #交换
return nums

选择排序
算法思想:

1、初始状态中有序序列为空,无序序列为列表长度;
2、将第一个元素与其余元素对比,如果第一个元素大于第二个元素,将min下标替换为第二个元素,依此类推,获取最小元素的下标,与i替换;
3、此时有序序列为1,无序序列列表长度-1;
4、将剩余的无序序列反复进行第二步,直至无序序列为1;

复杂度:

选择排序的平均复杂度为O(n2)。每进行一轮操作,最多交换一次,因此交换操作介于0与n-1之间,比较操作次数为n*(n-1)/2

稳定性:

不稳定。一个list,如果第一个元素与第四个元素相同,进行比较时,最小元素在第四个元素之后,第一个元素与最小元素交换,此时两个相等的元素已经失去原有的前后顺序,故不稳定。比如列表[3,9,7,3,4,1,2],为了方便理解,在列表后面添加对应的下标[3(0),9(1),7(2),3(3),4(4),1(5),2(6)],列表无序,将第一个元素与其他元素做对比,发现元素值为1,下标为5为最小值,因此将3(0)与1(5)进行交换,得到的序列结果为[1(5),9(1),7(2),3(3),4(4),3(0),2(6)],由此可见,两个相同的元素3,顺序发生了改变,故而不稳定。

代码:

def selection_sort(list2):
for i in range(0, len (list2)-1):
min_ = i
for j in range(i + 1, len(list2)):
if list2[j] < list2[min_]:
min_ = j
list2[i], list2[min_] = list2[min_], list2[i] # swap

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,099评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,828评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,540评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,848评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,971评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,132评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,193评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,934评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,376评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,687评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,846评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,537评论 4 335
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,175评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,887评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,134评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,674评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,741评论 2 351

推荐阅读更多精彩内容

  • 排序算法说明 (1)排序的定义:对一序列对象根据某个关键字进行排序; 输入:n个数:a1,a2,a3,…,an 输...
    code武阅读 655评论 0 0
  • 概述 排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部...
    蚁前阅读 5,170评论 0 52
  • 1、常用排序算法 2、快速排序法 基本思想:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比...
    Bling_ll阅读 540评论 0 0
  • 我想 放下束缚 只做自己 我想 不再去刻意追求别人所期望的样子 我想 在没有云彩的时候 去看日出 我想 在阳光下 ...
    一只独自游水的鱼阅读 217评论 2 1
  • 我依然清晰的记得, 去超市买零食, 看到喜欢的, 拿起来又放下, 因为价钱让我, 望而却步。 爱美是人的天性, 见...
    正儿八经的疯子阅读 126评论 0 5