python氣泡排序與插入排序演算法實現。

2021-09-21 02:05:50 字數 2387 閱讀 3210

花費時間很多的一種排序演算法

我們有 a1,a2…an個資料,

a1和a2比較

如果a1>a2

a1 a2交換位置

然後a2 和 a3 比較,一直比到 an。

這是一次輪迴,每次輪迴,an都是最大(或最小,根據a1 a2的判斷條件)的數

第一次排序,an已經為最大(或最小)

然後進行第二次比較,第二輪 陣列去掉最後乙個最大的值,其他繼續進行排序。

理論上 要進行 n(n-1)/2 次 交換.

# 使用python 來實現這個演算法

import random

random_list =

[ random.randint(1,

20)for i in

range(10

)]# 有10個元素,理論上要進行10輪排序

# 第一次排序,要進行9次交換。

# 第二次排序,要進行8次交換

list_len =

len(random_list)-1

# 減一,避免陣列越界的問題

print

(random_list)

for i in

range(10

):sort_over =

true

# 氣泡排序,進行優化

for j in

range

(list_len - i )

:"""

# 如果i=3,那麼最後3位已經排序好了

# 只需要再排序 len - i 次即可

"""if random_list[j]

> random_list[j+1]

: random_list[j]

,random_list[j+1]

= random_list[j+1]

,random_list[j]

# 第i輪,j和j+1 進行交換

print

(f",,swap:"

,random_list)

sort_over =

false

else

:print

(f",,swap:"

,random_list)

if sort_over ==

true

:break

print

(random_list)

插入演算法,將乙個新陣列,插入到乙個有序序列中,並使序列繼續保持有序。
插入排序的話,可以將列表插入到乙個空表中。

或前n個是有序,後m個是待插入序列。

4,5,7,6,9,3

4,5,7 有序

6,9,3 待插入

剛才是的時候,把第乙個元素當做有序序列,後面的是待插入序列~!

import random

random_list =

[random.randint(1,

20)for i in

range(0

,20)]

list_len =

len(random_list)

for i in

range(1

, list_len)

: j =

0 is_swap =

false

# 優化

# j為索引,有序

# i為待插入的值的索引

while j < i:

## 比較 0,1 的值,從小到大排序的

# 有序序列 從 0到j開始比較

# 一直到 待插入的資料,比有序序列小,停止

if random_list[j]

> random_list[i]

: is_swap =

true

# 除了此優化,還可以用二分查詢等方法

break

j = j +

1# 繼續下乙個比較

if is_swap ==

true

:continue

tmp = random_list[i]

# 插入的值

k = i # 記錄索引,一會會加減操作

# 資料移動

while k > j:

random_list[k]

= random_list[k -1]

k = k -

1# 插入資料

random_list[k]

= tmp

print

(random_list)

氣泡排序,插入排序 PYTHON

氣泡排序 使用 冒泡策略 把最大的元素移動到序列最右端。在一次冒泡過程中,相鄰元素進行比較。python a 5,4,12,3,5,6,9 def bubble sort num n len num for i in range n 1,0,1 for j in range 1,i 1 if num...

氣泡排序與插入排序

氣泡排序 void bubblesort int a,int n if flag 0 注意 1 每一趟通過比較相鄰兩個數的大小,最後實現最大的數放在最後面 插入排序 void insertionsort int a,int n a p temp 注意 1 比如10 9 8,假設手上拿的牌是10,需要...

氣泡排序與插入排序

氣泡排序 bubble sort 也是一種簡單直觀的 排序演算法 它重複地走訪過要排序的數列,一次比較兩個元素,如果他們的順序錯誤就把他們交換過來.這個演算法的名字由來是因為越小的元素會經由交換慢慢 浮 到數列的頂端。插入排序 插入排序是一種最簡單直觀的排序演算法,它的工作原理是通過構建有序序列,對...