三大排序演算法

2021-09-29 09:35:19 字數 1299 閱讀 5168

# 當前結果是從大到小,若想從小到大排序,將a[j] < a[j+1] 改為 a[j] > a[j+1] 即可

a =[1,

4,2,

5,22,

3]n =len

(a)for i in

range(1

,n):

for j in

range

(n-i)

:if a[j]

< a[j+1]

: a[j]

,a[j+1]

= a[j+1]

,a[j]

print

(a)

# 當前結果是從大到小,若想從小到大排序,將a[min] < a[j] 改為 a[min] > a[j] 即可

a =[1,

4,2,

5,22,

3]n =len

(a)for i in

range(1

,n):

min= i-

1for j in

range

(i,n)

:if a[

min]

< a[j]

:min

=j if

min!= i-1:

a[min]

,a[i-1]

= a[i-1]

,a[min

]print

(a)

def

solution

(alist)

: start =

0 end =

len(a)-1

num =

5# 代表要查詢的元素

while start <= end:

mid =

(start+end)//2

# 先找中間值下標

if num == a[mid]

:print

('num對應的下標的值是:%d'

% mid)

return mid

elif num > a[mid]

:# 去中間值 之後找

start = mid +

1elif num < a[mid]

:# 去中間值 之前找

end = mid -

1print

('不存在'

)

a =[1,

2,3,

4]solution(a)

O n 2 三大排序演算法

一.如何分析乙個排序演算法?1.執行效率 2.記憶體消耗 原地排序演算法,就是特指空間複雜度位o 1 的排序演算法。氣泡排序 插入排序和選擇排序,都是原地排序演算法。3.穩定性 如果待排序的序列中存在值相等的元素,經過排序之後,相等元素之間原有的先後順序不變。二.為什麼學習o n 2 複雜度的排序演...

8大排序演算法

一 各個排序演算法的過程 1 直插入排序 乙個個的進行插入,直到有序序列。穩定的。要點 設立哨兵,作為臨時儲存和判斷陣列邊界之用。具體實現 如下 時間複雜度 o n 2 void insertsort int a,int n 3 選擇排序 按大小順序一次選出,進行公升降排列。在要排序的一組數中,選出...

九大排序演算法

常見的排序分為兩類,一類是內部排序 直接插入排序 希爾排序 簡單選擇排序 堆排序 氣泡排序 快速排序 歸併排序 基數排序 一類是外部排序。當n較大時,應該使用時間複雜度為o nlog2n 的排序,如快速排序 堆排序 歸併排序。快排是基於比較的內部排序中,最好的方法。假設陣列為r 0 r n 1 第一...