# 當前結果是從大到小,若想從小到大排序,將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 第一...