python棧 氣泡排序 選擇排序

2021-09-13 23:56:41 字數 2052 閱讀 4681

有些地方稱為堆疊,是一種容器,可存入資料元素、訪問元素、刪除元素,它的特徵在於只能允許在容器的一端進入加入資料和輸出資料的運算。沒有了位置概念,保證任何時候可以訪問、刪除的元素都是此前最後存入的那個元素,確定了一種預設的訪問順序。

棧可以用順序表實現,也可以用鍊錶實現。

stack() 建立⼀個新的空棧

push(item) 新增⼀個新的元素item到棧頂

pop() 彈出棧頂元素

peek() 返回棧頂元素

is_empty() 判斷棧是否為空

size() 返回棧的元素個數

棧: 先進後出

佇列:先進先出

佇列(queue)是只允許在⼀端進⾏插⼊操作,⽽在另⼀端進⾏刪除操作的

線性表。

queue() 建立乙個空的佇列

enqueue(item) 往佇列中新增乙個item元素

dequeue() 從佇列頭部刪除乙個元素

is_empty() 判斷乙個佇列是否為空

size() 返回佇列的大小

雙端佇列(deque,全名double-ended queue),是一種具有佇列和棧的性質的資料結構。

deque() 建立⼀個空的雙端佇列

add_front(item) 從隊頭加⼊⼀個item元素

add_rear(item) 從隊尾加⼊⼀個item元素

remove_front() 從隊頭刪除⼀個item元素

remove_rear() 從隊尾刪除⼀個item元素

is_empty() 判斷雙端佇列是否為空

size() 返回佇列的⼤⼩

排序演算法是一種能將一串資料依照特定的順序進行排列的一種演算法。

排序演算法的穩定性

穩定性:穩定排序演算法會讓原本有相等鍵值的紀錄維持相對次序。

氣泡排序

氣泡排序(英語: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 )

穩定性:穩定

選擇排序

選擇排序(selection sort)是⼀種簡單直觀的排序演算法。

選擇排序的主要優點與資料移動有關。

時間複雜度

最優時間複雜度:o(n )

最壞時間複雜度:o(n )

穩定性:不穩定(考慮公升序每次選擇最⼤的情況)

def paixu(li):

n = len(li)

for i in range(n -1): # 需要進⾏n-1次選擇操作

a = i # 記錄最⼩位置

for j in range(i + 1,n): # 從i+1位置到末尾選擇出最⼩資料

if li[a] > li[j]:

a = j

if a != i: # 如果選擇出的資料不在正確位置,進⾏交換

li[i],li[a]=li[a],li[i]

li = [54, 26, 93, 17, 77, 31, 44, 55, 20]

paixu(li)

print(li)

python氣泡排序 選擇排序

氣泡排序 1 比較相鄰的元素。如果第乙個比第二個大,就交換他們兩個的位置。2 對每一對相鄰元素做同樣的工作,從開始第一對到結尾的最後一對。完成一次完整的比較和交換位置時,最後的元素應該會是最大的數。3 針對所有的元素重複以上的步驟,除了最後乙個。4 持續每次對越來越少的元素重複上面的步驟,直到沒有任...

Python 氣泡排序 選擇排序

依次輸入n個數,進行氣泡排序 氣泡排序法,即兩個相鄰的進行比較,比較之後換位置 def bubblesort arr n len arr for i in range n for j in range 0 n i 1 if arr j arr j 1 arr j arr j 1 arr j 1 ar...

氣泡排序和選擇排序 python

排序方法有很多,實際和面試中我們面對最多可能就是氣泡排序和選擇排序 氣泡排序 在給定資料列表中從第乙個開始逐一和下乙個值進行比較,如果發現下乙個值大於自己就調換下位置,以此類推,到最後便可以實現從小到大的排序 選擇排序 在給定資料列表中找到最小的乙個數值,然後依次和後面的進行對比,比如我們認為最左側...