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個數,將小數放前,大數放後,如此繼續,直至比較最後兩個數,將小數放前,大數放後。至此...