Python 演算法題

2021-10-01 01:22:27 字數 2906 閱讀 6190

"""

演算法題:

提供乙個序列,完成對這個序列的分割。要求分割後的兩個序列彼此差值最小

實現函式,返回兩個序列

"""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...