python sort 部分元素_Python 简单排序算法-选择、冒泡、插入排序实现
生活随笔
收集整理的這篇文章主要介紹了
python sort 部分元素_Python 简单排序算法-选择、冒泡、插入排序实现
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
寫文章主要是記錄自己每天學習的東西,本篇文章主要介紹數據結構中常用的簡單的排序算法,雖然這些算法用Python實現起來不是十分的高效,不如c、java之類的運行速度快,應用Python實現主要是為了:1、證明我已經理解了這些算法,2、實現算法可以給自己帶來莫名的成就感,這也算是自己的一點積累吧,多少年后,看了這些文章會有些許的自豪吧,好了,言歸正傳,進入今天的正題:簡單排序算法之選擇、冒泡、插入排序。
1、選擇排序
選擇排序是最直觀的一種排序思想,但是其是一種不穩定的排序方法。
主要思想:每次從待排序的元素中選出最小或最大的一個元素,放在序列的起始位置,然后在從剩下的序列中繼續尋找最小或最大的元素,直接序列剩下一個元素為止。
def select_sort(origin_items, desc=False):"""選擇排序origin_items 為待排序序列desc表示是否為降序,默認為升序"""than = '<' if desc else '>'for i in range(len(origin_items) - 1):min_index = ifor j in range(i + 1, len(origin_items)):if eval(str(origin_items[i])+than+str(origin_items[j])):min_index = jorigin_items[i],origin_items[min_index] = origin_items[min_index],origin_items[i]return origin_items2、冒泡排序
主要思想:從序列的第一個元素開始逐個與它后面的每個元素進行比較,如果滿足條件(大于或小于)則交換兩個元素,否則繼續向后比較,直接結束。
def bubble_sort(origin_items, desc=False):'''冒泡排序'''than = '<' if desc else '>'for i in range(len(origin_items)-1):for j in range(i+1,len(origin_items)):if eval(str(origin_items[i])+than+str(origin_items[j])):#交換兩個元素的位置 origin_items[i],origin_items[j] = origin_items[j],origin_items[i]return origin_items3、插入排序
主要思想:將數據分為有序和無序兩部分,通常將第一個元素設置為有序部分,剩下的元素設置為無序部分,每次從無序部分的第一個元素開始與有序部分的元素從后向前逐個比較,找到插入位置將元素插入到有序部分中,直到數據都是有序部分為止。
def insert_sort(origin_items, desc=False):'''插入排序'''than = '>' if desc else '<'for i in range(1,len(origin_items)):for j in range(i,0,-1):if eval(str(origin_items[j]) + than + str(origin_items[j-1])):origin_items[j],origin_items[j-1] = origin_items[j-1],origin_items[j]return origin_items驗證:
a = [10,2,44,2,4,5,7,3,445,24] print('選擇排序升序結果為:',select_sort(a)) print('選擇排序降序結果為:',select_sort(a,True))print('冒泡排序升序結果為:',bubble_sort(a)) print('冒泡排序降序結果為:',bubble_sort(a,True))print('插入排序升序結果為:',insert_sort(a)) print('插入排序降序結果為:',insert_sort(a,True))結果為:
如果感興趣的歡迎關注公眾賬號:洞察數據挖掘價值。
總結
以上是生活随笔為你收集整理的python sort 部分元素_Python 简单排序算法-选择、冒泡、插入排序实现的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: LG 新能源与本田正式成立合资电池生产企
- 下一篇: HDMI 特许公司称 HDMI 替代模式