python 與資料結構 氣泡排序

2021-07-10 06:06:12 字數 1978 閱讀 3036

python這樣簡潔的語言,內建了很多排序、佇列、集合等方法,使得演算法什麼的沒那麼重要。但是用python來實現以前學過的演算法,也是樂趣,簡潔的語法更加容易的理解演算法.

[ python 基礎教程]

1.排序方法

將被排序的陣列a[n]垂直排列,每個記錄看作是重量為a[i]的氣泡。根據輕氣泡不能在重氣泡之下的原則,從下往上掃瞄陣列a。凡掃瞄到違反本原則的輕氣泡,就使其向上」飄浮」。如此反覆進行,直到最後任何兩個氣泡都是輕者在上,重者在下為止。
(1)初始狀態

a[0..n]為無序區。

(2)第一趟掃瞄

從無序區底部向上依次比較相鄰的兩個氣泡的重量,若發現輕者在下、重者在上,則交換二者的位置。即依次比較 (a[n],a[n-1]),(a[n-1],a[n-2]),…,(a [1 ],a[0]);對於每對氣泡(a[j+1],a[j]),若a[j+1] < a[j],則交換a[j+1] < a[j]的內容。

第一趟掃瞄完畢時,」最輕」的氣泡就飄浮到該區間的頂部,即關鍵字最小的記錄被放在最高位置a[0]上。

(3)第二趟掃瞄

掃瞄a[1..n]。掃瞄完畢時,」次輕」的氣泡飄浮到a[ 1]的位置上……

最後,經過n-1 趟掃瞄可得到有序區a[0..n]

注意:

第i趟掃瞄時,a[0..i-1]和a[ i..n]分別為當前的有序區和無序區。掃瞄仍是從無序區底部向上直至該區頂部。掃瞄完畢時,該區中最輕氣泡飄浮到頂部位置a[i]上,結果是a[0..i]變為新的有序區。

# -*-coding:utf-8 -*-

'''created on 2023年3月2日

@author: [email protected]

'''def

bubblesort

(mylist):

'''列表氣泡排序'''

length=len(mylist)

for i in range(length):

exchange=false

#交換標誌

for j in range(length-1,i,-1):

if mylist[j]1]:

temp=mylist[j]

mylist[j]=mylist[j-1]

mylist[j-1]=temp

exchange=true

#發生了交換,故將交換標誌置為真

ifnot exchange:

return

for x in mylist:

print x

if __name__=='__main__':

a=[12,3,4,56,78,90,56]

bubblesort(a)

print a

/*

created on 2023年3月2日

@author: [email protected]

*/#include

typedef

intbool;

#define false 0

#define true 1

void bubblesort(int a,int n);

int main()

; int i;

int n=sizeof(a)/sizeof(a[0]);

for (i=0;iprintf("%d \t",a[i]);

}printf("\n");

bubblesort(a,n);

for (i=0;iprintf("%d \t",a[i]);

}printf("\n");

return0;}

void bubblesort(int r,int n)

}if (!exchange)

return ;

}return ;

}

python資料結構與演算法 氣泡排序

氣泡排序 英語 bubble sort 是一種簡單的排序演算法。它重複地遍歷要排序的數列,一次比較兩個元素,如果他們的順序錯誤就把他們交換過來。遍歷數列的工作是重複地進行直到沒有再需要交換,也就是說該數列已經排序完成。這個演算法的名字由來是因為越小的元素會經由交換慢慢 浮 到數列的頂端。氣泡排序演算...

資料結構 氣泡排序(Python)

氣泡排序 英語 bubble sort 是一種簡單的排序演算法。它重複地遍歷要排序的數列,一次比較兩個元素,如果他們的順序錯誤就把他們交換過來。遍歷數列的工作是重複地進行直到沒有再需要交換,也就是說該數列已經排序完成。這個演算法的名字由來是因為越小的元素會經由交換慢慢 浮 到數列的頂端。氣泡排序演算...

資料結構與演算法 排序 氣泡排序

兩兩相鄰記錄的關鍵字,如果反序則交換,直到沒有反序的記錄為止。氣泡排序基本概念是 依次比較相鄰的兩個數,將小數放在前面,大數放在後面。即在第一趟 首先比較第1個和第2個數,將小數放前,大數放後。然後比較第2個數和第3個數,將小數放前,大數放後,如此繼續,直至比較最後兩個數,將小數放前,大數放後。至此...