"""
演算法題:
提供乙個序列,完成對這個序列的分割。要求分割後的兩個序列彼此差值最小
實現函式,返回兩個序列
"""count =
0def
func
(i):
i.sort(
)global count
count +=
1print
('i'
, i)
print
('count'
, count)
ifnot i:
return([
],)elif
len(i)==1
:return
(i[0:]
,)else
: max_num = i[-1
] min_num = i[-2
] max_list, min_list = func(i[:-
2])print
('max_list'
, max_list)
print
('min_list'
, min_list)
ifsum
(max_list)
>=
sum(min_list)
:return
(max_list, min_list)
else
:return
(min_list, max_list)
l =[1,
46,3,
8,6,
4561
,4642,45
,8,9
,155
,1784
]# l = [1, 46, 3, 9, 6, 10]
print
(len
(l))
l1, l2 = func(l)
print
(l1, l2)
# [3, 6, 9, 45, 1784, 4561] [1, 8, 8, 46, 155, 4642]
def
quick_sort
(alist, start, end)
:# 遞迴的退出條件
if start >= end:
return
# 設定起始元素為要尋找位置的基準元素
mid = alist[start]
# low 為序列左邊的由左向右移動的游標
low = start
# high 為序列右邊的由右向左移動的游標
high = end
while low < high:
# 如果 low 與 high 未重合,high 指向的元素不比基準元素小,則 high 向左移動
while low < high and alist[high]
>= mid:
high -=
1# 將 high 指向的元素放到 low 的位置上
alist[low]
= alist[high]
# 如果 low 與 high 未重合,low 指向的元素比基準元素小,則 low 向右移動
while low < high and alist[low]
< mid:
low +=
1# 將 low 指向的元素放到 high 的位置上
alist[high]
= alist[low]
# 退出迴圈後,low 與 high 重合,此時所指位置為基準元素的正確位置
# 將基準元素放到該位置
alist[low]
= mid
# 對基準元素左邊的子串行進行快速排序
quick_sort(alist, start, low-1)
# 對基準元素右邊的子串行進行快速排序
quick_sort(alist, low+
1, end)
alist =[54
,26,93
,17,77
,31,44
,55,20
]quick_sort(alist,0,
len(alist)-1
)print
(alist)
arr =[7
,4,3
,67,34
,1,8
]def
bubble_sort
(arr)
: n =
len(arr)
for j in
range(0
, n -1)
: count =
0for i in
range(0
, n -
1- j)
:if arr[i]
> arr[i +1]
: arr[i]
, arr[i +1]
= arr[i +1]
, arr[i]
count +=
1if count ==0:
return
print
(count)
bubble_sort(arr)
print
(arr)
arr1 =[1
,3,4
,7,8
,34,67
]bubble_sort(arr1)
print
(arr1)
在這裡插入**片
在這裡插入**片
在這裡插入**片
在這裡插入**片
Python 經典演算法題
概念 動態規劃過程是 每次決策依賴於當前狀態,又隨即引起狀態的轉移。乙個決策序列就是在變化的狀態中產生出來的,所以,這種多階段最優化決策解決問題的過程就稱為動態規劃。演算法關鍵點 1 最優化原理,也就是最有子結構性質。這指的是乙個最優化策略具有這樣的性質,無論過去狀態和決策如何,對前面的決策所形成的...
Python 刷演算法題技巧
以空格為間隔輸出 行末無空格 f dfs is a 格式化字串簡短寫法,前面加乙個 f 與 區別 結果都是浮點數,只有當兩個運算元其中有浮點數結果才為浮點數 一行寫多個語句用 分開,乙個語句一行寫不下行末用 用,結尾的不用加。if 寫法 普通寫法if condition if condition 我...
演算法題 篩質數(Python)
給定乙個正整數n,請你求出1 n中質數的個數。輸入格式 共一行,包含整數n。輸出格式 共一行,包含乙個整數,表示1 n中質數的個數。資料範圍 1 n 10 6 輸入樣例 8輸出樣例 4方法1 誒氏篩法 o nloglogn n int input st true n 1 cnt 0 primes f...