您好,登錄后才能下訂單哦!
本文小編為大家詳細介紹“Python排序問題怎么解決”,內容詳細,步驟清晰,細節處理妥當,希望這篇“Python排序問題怎么解決”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學習新知識吧。
冒泡排序(Bubble Sort,臺灣譯為:泡沫排序或氣泡排序)是一種簡單的排序算法。它重復地走訪過要排序的數列,一次比較兩個元素,如果他們的順序錯誤就把他們交換過來。走訪數列的工作是重復地進行直到沒有再需要交換,也就是說該數列已經排序完成。
這個算法的名字由來是因為越大的元素會經由交換慢慢“浮”到數列的頂端,故名。
import random as r #寫入數據 def add(li=[]): num=int(input('')) if num==-1: return li li.append(num) return add(li) #排序 def bubble(li): for i in range(0,len(li)): for j in range(0,len(li)-i-1): if li[j]>li[j+1]: li[j]=li[j]^li[j+1] li[j+1]=li[j]^li[j+1] li[j] = li[j] ^ li[j + 1] return li if __name__=='__main__': #輸入: l=add() r.shuffle(l) print('排序前:',l) newlist2=bubble(l) print('2.排序后:',newlist2)
選擇排序(Selection sort)是一種簡單直觀的排序算法。它的工作原理是每一次從待排序的數據元素中選出最小(或最大)的一個元素,存放在序列的起始位置,直到全部待排序的數據元素排完。 選擇排序是不穩定的排序方法(比如序列[5, 5, 3]第一次就將第一個[5]與[3]交換,導致第一個5挪動到第二個5后面)。
import random as r #寫入數據 def add(li=[]): num=int(input('')) if num==-1: return li li.append(num) return add(li) #選擇排序 def choose(li): for i in range(0,len(li)-1): for j in range(i+1,len(li)): if li[i]>li[j]: li[j] = li[j] ^ li[i] li[i] = li[j] ^ li[i] li[j] = li[j] ^ li[i] return li if __name__=='__main__': #輸入: l=add() r.shuffle(l) #打亂列表的順序 print('排序前:',l) newlist3=choose(l) print('3.排序后:',newlist3)
有一個已經有序的數據序列,要求在這個已經排好的數據序列中插入一個數,但要求插入后此數據序列仍然有序,這個時候就要用到一種新的排序方法--插入排序法,插入排序的基本操作就是將一個數據插入到已經排好序的有序數據中,從而得到一個新的、個數加一的有序數據,算法適用于少量數據的排序,時間復雜度為O(n^2)。是穩定的排序方法。插入算法把要排序的數組分成兩部分:第一部分包含了這個數組的所有元素,但將最后一個元素除外(讓數組多一個空間才有插入的位置),而第二部分就只包含這一個元素(即待插入元素)。在第一部分排序完成后,再將這個最后元素插入到已排好序的第一部分中。
插入排序的基本思想是:每步將一個待排序的紀錄,按其關鍵碼值的大小插入前面已經排序的文件中適當位置上,直到全部插入完為止。
import random as r #寫入數據 def add(li=[]): num=int(input('')) if num==-1: return li li.append(num) return add(li) #插入排序 def insert(li): for i in range(1,len(li)): num=li[i] j=i-1 while j>=0 and li[j]>num: li[j+1]=li[j] li[j]=num j+=1 return li if __name__=='__main__': #輸入: l=add() r.shuffle(l) #打亂列表的順序 print('排序前:',l) newlist4=insert(l) print('4.排序后:',newlist4)
讀到這里,這篇“Python排序問題怎么解決”文章已經介紹完畢,想要掌握這篇文章的知識點還需要大家自己動手實踐使用過才能領會,如果想了解更多相關內容的文章,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。