氣泡排序,原理想起來並不難,核心便是四五行**,若是用python
,更是簡約。然而,自己寫起來,仍然並不順手,總是會糾結於下標的游動。
今天便是如此,這不是我第一次寫冒泡演算法了,之前用python
寫過一次,**如下:
def
bubble_sort
(list):
dist=
len(
list
)for j in
range(0
,dist)
:for i in
range(0
,dist-1)
:# 交換
iflist
[i]>
list
[i+1]:
t=list
[i]list
[i]=
list
[i+1
]list
[i+1]=t
return
list
換一種寫法是:
def
bubble_sort
(arr)
: size =
len(arr)
for i in
range(0
, size)
:for j in
range(0
, size-1)
:if arr[i]
> arr[i+1]
: arr[i]
, arr[i+1]
= arr[i+1]
, arr[i]
# 交換位置
return arr
以下用c**實現的:
#include
intmain()
//bubble sort
//n-1 times
for(
int i =
0; i < n-
1; i++)}
}for
(int k =
0; k < n; k++
)//printf("\n");
}return0;
}
20181223 update:
python版本的和c版本的有個實現上的小區別,只是作為對比,其實可以按照c版本的來寫比較合理,即內層迴圈測次數,上面的**是按照公升序排列,每次選擇的是當前的最大值,所以從後往前,最大,次大…排列,所以內層迴圈次數應當是size - i - 1
,逐漸減小。
end.
氣泡排序演算法小結
原理 比較兩個相鄰的元素,將值大的元素交換至右端。思路 依次比較相鄰的兩個數,將小數放在前面,大數放在後面。即在第一趟 首先比較第1個和第2個數,將小數放前,大數放後。然後比較第2個數和第3個數,將小數放前,大數放後,如此繼續,直至比較最後兩個數,將小數放前,大數放後。重複第一趟步驟,直至全部排序完...
氣泡排序,選擇排序,二分查詢小結
我們知道,排序方法很多 氣泡排序,選擇排序,快速排序,希爾排序。今天,我將就我的了解來作出介紹 氣泡排序 氣泡排序是一種較為簡單的排序方法,它主要思路是遍歷所有的資料,一次比較兩個數,如果它們的順序是我們所要求的,就不變化 如果它們的大小順序和我們的要求相左,則進行交換。重複遍歷,直到沒有資料需要交...
氣泡排序 排序 氣泡排序
既然寫了計組思來想去便打算把資料結構也寫下來,寫的時候總是發現看的時候無法發現的問題,受益良多。交換排序的基本思想 exchange until sorted 順序,分支,迴圈 注意偽 的熟悉 下面介紹兩種交換演算法 首先進行聯想,用乙個圖進行輔助聯想 水冒泡過程 頂部是陣列的begin,底部理解為...