現在是第三週,剛把第一周做完,要抓緊了。
首先是merge_sort演算法,採用二分然後遞迴的方法,將時間優化到o(nlog(n))
def sort_split(a,b):
l_a=len(a)
l_b=len(b)
l=l_a+l_b
l=i=0;j=0
for k in range(l):
if i!=l_a and (j==l_b or a[i]
name=raw_input('input text name:')
f=open(name+'.txt')
s=f.readlines()
for i in range(len(s)):
s[i]=int(s[i].strip())
def count_inverse(a):
l=len(a)
if l==1:
return a,0
else:
l1=a[:l/2]
l2=a[l/2:]
l1,c1=count_inverse(l1)
l2,c2=count_inverse(l2)
l,c3=count_split(l1,l2)
return l,c1+c2+c3
def count_split(a,b):
l_a=len(a)
l_b=len(b)
l=l_a+l_b
i=0;j=0
l=count=0
for k in range(l):
if i!=l_a and (j==l_b or a[i]
總結一周:時間的優化,分冶思想,merge_sort演算法。
演算法,第一周
題目 給定乙個整數陣列 nums 和乙個目標值 target,請你在該陣列中找出和為目標值的那 兩個 整數,並返回他們的陣列下標。你可以假設每種輸入只會對應乙個答案。但是,你不能重複利用這個陣列中同樣的元素。示例 給定 nums 2,7,11,15 target 9 因為 nums 0 nums 1...
演算法訓練第一周
leetcode 283 移動零 基礎寫法 class solution 設定指標i j 遍歷nums i 當nums i 0 即當值不為0時 nums j nums i j int j 0 for int i 0 i i 可以使i j指標同時向右移 只有當nums i 0 j才移動 造成j指標是慢...
第一周演算法複習
第一周演算法複習 2021 11 08 2021 11 14 雖然在c 中有內建的sort函式幫助我們進行時間複雜度為nlogn的快速排序,不過快排的思想和雙指標演算法還是很值得我們學習的 快排的思想 很顯然,快排的關鍵就在於我們怎麼以分界點為界,移動值到分界點的兩邊。開另外兩個陣列a,b,把所有小...