氣泡排序:重複地走訪過要排序的元素列,依次比較兩個相鄰的元素,一層一層的將較大的元素往後移動,類似氣泡慢慢變大的過程。
演算法思想:1.從第乙個和第二個開始比較,如果第乙個比第二個大,則交換位置;然後比較第二個和第三個,依次類推;
2.經過第一輪迴圈,最大的數已經排在最後一位,所以重複以上操作,第二大的數會排在倒數第二個位置。
3.則再重複n-1次排序完畢,因為最後乙個數字不需要排序了。
演算法實現:
1.首先生成乙個隨機數的列表
import random
random_num_list = random.sample(
range(1
,100),
20)print
(random_num_list)
[66, 70, 16, 98, 97, 52, 56, 76, 23, 27, 36, 38, 2, 47, 11, 58, 33, 46, 62, 99]
2.排序
#經過一輪排序,最大的數字移到最後一位。
for j in
range
(len
(random_num_list)-1
):if random_num_list[j]
> random_num_list[j+1]
: random_num_list[j]
, random_num_list[j+1]
= random_num_list[j+1]
, random_num_list[j]
print
(random_num_list)
[66, 16, 70, 97, 52, 56, 76, 23, 27, 36, 38, 2, 47, 11, 58, 33, 46, 62, 98, 99]
#經過n-1次上述過程,排序完成。
for i in
range
(len
(random_num_list)-1
):for j in
range
(len
(random_num_list)-1
):if random_num_list[j]
> random_num_list[j+1]
: random_num_list[j]
, random_num_list[j+1]
= random_num_list[j+1]
, random_num_list[j]
print
(random_num_list)
[2, 11, 16, 23, 27, 33, 36, 38, 46, 47, 52, 56, 58, 62, 66, 70, 76, 97, 98, 99]
選擇排序:由於氣泡排序每次都要進行交換位置,浪費記憶體,又有了選擇排序。
演算法思想:1.將第乙個數字設為最小值,依次和後面的數字進行比較,當有比第乙個數字小的數,則把最小值的索引置為該數字的索引,比較完之後,將最小值索引對應的數字和第一位交換;2.經過一輪操作,最小數排在第一位,然後將第二個數字設為最小值,以此類推;3.同樣地,經過n-1次,排序完成。
演算法實現:
random_num_list = random.sample(
range(1
,50),
20)print
(random_num_list)
#將最小的數排在第一位
i =0
minimal_index = i
for j in
range
(i+1
,len
(random_num_list)):
if random_num_list[j]
< random_num_list[minimal_index]
: minimal_index = j
random_num_list[i]
, random_num_list[minimal_index]
= random_num_list[minimal_index]
, random_num_list[i]
print
(random_num_list)
[7, 31, 26, 23, 48, 15, 18, 1, 49, 41, 3, 30, 44, 36, 24, 42, 17, 12, 38, 39]
[1, 31, 26, 23, 48, 15, 18, 7, 49, 41, 3, 30, 44, 36, 24, 42, 17, 12, 38, 39]
for i in
range
(len
(random_num_list)):
minimal_index = i
for j in
range
(i+1
,len
(random_num_list)):
if random_num_list[j]
< random_num_list[minimal_index]
: minimal_index = j
random_num_list[i]
, random_num_list[minimal_index]
= random_num_list[minimal_index]
, random_num_list[i]
print
(random_num_list)
[1, 3, 7, 12, 15, 17, 18, 23, 24, 26, 30, 31, 36, 38, 39, 41, 42, 44, 48, 49]
排序演算法 冒泡和選擇排序
氣泡排序的基本思想是 通過對待排序序列從前向後 從下標較小的元素開始 依次比較 相鄰元素的值,若發現逆序則交換,使值較大的元素逐漸從前移向後部,就象水底下的氣泡一樣逐漸向上冒。氣泡排序演算法 public static int maopaosort int initial return initia...
排序演算法 冒泡和選擇
最近複習一下排序演算法,從簡單的開始,陸續寫上來 一 氣泡排序 氣泡排序總的平均時間複雜度為 import random def bubblesort arr for i in range 0,len arr for j in range i 1,len arr if arr i arr j tem...
氣泡排序和選擇排序 python
排序方法有很多,實際和面試中我們面對最多可能就是氣泡排序和選擇排序 氣泡排序 在給定資料列表中從第乙個開始逐一和下乙個值進行比較,如果發現下乙個值大於自己就調換下位置,以此類推,到最後便可以實現從小到大的排序 選擇排序 在給定資料列表中找到最小的乙個數值,然後依次和後面的進行對比,比如我們認為最左側...