氣泡排序
氣泡排序: 是一種交換排序。 兩兩比較待排序元素,發現2個元素次序相反則進行交換,直到沒有反序的元素為止。
氣泡排序:通過無序區中相鄰記錄的關鍵字間的比較和位置的交換,使關鍵字最小的元素如氣泡似的逐步上浮直水面。有序區逐漸擴大,無序區逐漸縮小。
lists = [1, 9, 3, 5, 2, 0, 8, 7, 6, 4]
lenth = len(lists)
for i in range(lenth):
inner_lenth = lenth - i
for j in range(inner_lenth-1):
first = lists[j]
next = lists[j + 1]
if first > next:
lists[j], lists[j + 1] = lists[j + 1], lists[j]
print(lists)
插入排序
插入排序是一種理想排序,假設序列開頭的數字有序,然後將後面的數字按順序插入 到序列當中。
它把乙個無序數列看成兩個數列,假如第乙個元素構成了第乙個數列,那麼餘下的元素構成了第二個數列,很顯然,第乙個數列是有序的(因為只有乙個元素嘛,肯定有序哦),那麼我們把第二個數列的第乙個元素拿出來插入到第乙個數列,使它依然構成乙個有序數列,直到第二個數列中的所有元素全部插入到第乙個數列,這時候就排好序了。
插入排序
lists = [8, 3, 6, 5, 9, 2, 0, 4, 7, 1]
lenth = len(lists)
for i in range(lenth):
while i > 0 and lists[i - 1] > lists[i]:
# i > 0 目的 結束while迴圈 限制迴圈次數
# i 》 0 從第二個個元素開始比較
lists[i - 1], lists[i] = lists[i], lists[i - 1]
i -= 1
print(lists)
選擇排序
1、選擇最小的值
2、遍歷其他的值,如果小於最小值,和最小值互換位置
lists = [8, 3, 6, 5, 9, 2, 0, 4, 7, 1]
lenth = len(lists)
for i in range(lenth):
for j in range(i + 1, lenth):
outer_num = lists[i]
inner_num = lists[j]
if inner_num < outer_num: # > < 決定排序的方式 正序還是倒序
lists[i], lists[j] = lists[j], lists[i]
print(lists)
print(lists)
快速排序
快速排序的思路是依據乙個中值資料項來把資料表分為兩半:小於中值的一半和大於中值的一半,然後每部分分別進行快速排序
基本結束條件:資料表僅有乙個資料項,自然是排好序的。
縮小規模:根據中值,將資料表分為兩半,最好情況是相等規模的兩半
呼叫自身:將兩半分別呼叫自身進行排序
**資料表的目標:找到「中值」應處的位置
分為左和右兩邊同時進行排序
①設定左右標,左標向右移動,右標向左移動,
②左標一直向右移動,碰到比中值大的就停止,右標一直向左移動,碰到比中值小的就停止,然後把左右標所指的資料項交換
③繼續前述的移動過程,直到左標移到右標的右側,停止移動,這時右標所指的位置就是中值應處的位置,將中值和這個位置交換,**完成,左半部全比中值小,右半部都比中值大。
def quick_sort(lists, start, end):
if start >= end:
return
mid = lists[start]
low = start
high = end
while low < high:
while low < high and lists[high] >= mid:
high -= 1
lists[low] = lists[high]
while low < high and lists[low] < mid:
low += 1
lists[high] = lists[low]
lists[low] = mid
quick_sort(lists, start, low - 1) # 左邊
quick_sort(lists, low + 1, end) # 右邊
lists = [8, 3, 6, 5, 9, 2, 0, 4, 7, 1]
quick_sort(lists, 0, len(lists) - 1)
print(lists)
排序的幾種方法
三種排序 選擇排序,氣泡排序,插入排序 的總結 1.選擇排序 1 public class demo3 遍歷排序前的數值 for int i 0 i num.length 1 i 如果最小值的標號未改變,代表本身已是最小值,否則交換數值 if min i 遍歷排序後的數值 for int i 0 i...
排序的幾種方法
三種排序 選擇排序,氣泡排序,插入排序 的總結 1.選擇排序 1 public class demo3 遍歷排序前的數值 for int i 0 i num.length 1 i 如果最小值的標號未改變,代表本身已是最小值,否則交換數值 if min i 遍歷排序後的數值 for int i 0 i...
陣列排序的幾種方法
演算法步驟 比較相鄰的元素。如果第乙個比第二個大,就交換他們兩個。對每一對相鄰元素作同樣的工作,從開始第一對到結尾的最後一對。這步做完後,最後的元素會是最大的數。針對所有的元素重複以上的步驟,除了最後乙個。持續每次對越來越少的元素重複上面的步驟,直到沒有任何一對數字需要比較。氣泡排序 functio...