您好,登錄后才能下訂單哦!
本文實例講述了Python實現的插入排序,冒泡排序,快速排序,選擇排序算法。分享給大家供大家參考,具體如下:
#!/usr/bin/python # coding:utf-8 #直接插入排序 def insert_sort(list): for i in range(len(list)): Key = list [i] #待插入元素 j = i - 1 while(Key < list[j] and j >= 0): list[j+1] = list[j] #后移元素 list[j] = Key j=j-1 return list #冒泡排序 def bubble_sort(list): for i in range(1, len(list)): for j in range(len(list)-i): if list[j] > list [j+1]: list[j+1],list[j] =list[j],list[j+1] return list #快速排序 def position_key(list, low, high): i = low j = high key = list[low] while(i < j): while(i < j and list[j] >= key): #從右向左,尋找第一個小于基準元素的數據索引。 注意:i<y 的判斷,內循環更新j j -= 1 if i < j : list[i] = list[j] while(i<j and list[i] <= key): #從左向右,尋找地一個大于基準元素的數據索引。i<y同上 i += 1 if i < j: list[j] = list[i] list[j] = key # 基準元素位置 return j def quick_sort(list, low, high): if low < high: position = position_key(list, low, high) #將數據分成前后兩個子序列(前邊序列值均小于后邊序列) quick_sort(list, low, position-1) #將前面的序列快速排序 quick_sort(list, position+1, high) #將后面的序列快速排序 return list #選擇排序 def select_sort(list): for i in range(len(list)): for j in range(i, len(list)): if list[i] > list[j]: list[i], list[j] = list[j], list[i] return list list = [23, 232, 11, 89,121, 64, 34, 12, 23423, 2312, 167, 768, 932, 346, 32789, 335, 2, 1145, 34, 56, 99, 111] print '原始序列 :', list print '直接插入排序:', insert_sort(list) print '冒泡排序 :', bubble_sort(list) print '快速排序 :', quick_sort(list, 0, len(list)-1) print '選擇排序 :', select_sort(list)
結果如下:
原始序列 : [23, 232, 11, 89, 121, 64, 34, 12, 23423, 2312, 167, 768, 932, 346, 32789, 335, 2, 1145, 34, 56, 99, 111]
直接插入排序: [2, 11, 12, 23, 34, 34, 56, 64, 89, 99, 111, 121, 167, 232, 335, 346, 768, 932, 1145, 2312, 23423, 32789]
冒泡排序 : [2, 11, 12, 23, 34, 34, 56, 64, 89, 99, 111, 121, 167, 232, 335, 346, 768, 932, 1145, 2312, 23423, 32789]
快速排序 : [2, 11, 12, 23, 34, 34, 56, 64, 89, 99, 111, 121, 167, 232, 335, 346, 768, 932, 1145, 2312, 23423, 32789]
選擇排序 : [2, 11, 12, 23, 34, 34, 56, 64, 89, 99, 111, 121, 167, 232, 335, 346, 768, 932, 1145, 2312, 23423, 32789]
PS:這里再為大家推薦一款關于排序的演示工具供大家參考:
在線動畫演示插入/選擇/冒泡/歸并/希爾/快速排序算法過程工具:
http://tools.jb51.net/aideddesign/paixu_ys
更多關于Python相關內容感興趣的讀者可查看本站專題:《Python數據結構與算法教程》、《Python列表(list)操作技巧總結》、《Python編碼操作技巧總結》、《Python函數使用技巧總結》、《Python字符串操作技巧匯總》及《Python入門與進階經典教程》
希望本文所述對大家Python程序設計有所幫助。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。