第二章之「CheckSums」(練習2 3 7)

2021-06-02 17:17:44 字數 573 閱讀 9678

題目:請給出乙個執行時間為o(nlgn)的演算法,使之能在給定乙個由n個整數構成的集合s和另乙個整數x時,判斷出s中是否存在有兩個其和等於x的元素。

思路:輸入:陣列a[1...n],待查詢整數v

輸出:若存在,輸出在陣列a中找到的第一對加和等於v的兩個元素索引及其值。

首先採用合併排序演算法對陣列進行從小到大排序(複雜度為o(nlgn))。

從左→右掃瞄陣列a(時間複雜度為o(n)),對每個a[i],在陣列中用二分查詢演算法尋找v-a[i](時間複雜度為o(lgn)),則總時間複雜度為o(nlgn)

#include #include #include #define buffer_size 10

void merge(int *a,int p,int q,int r)

q=(p+r)/2;

mergesort(a,p,q);

mergesort(a,q+1,r);

merge(a,p,q,r);

}void output(int *a,int len)

mid=(p+r)/2;

if(v==a[mid])

else if(v

第二章 練習。

1.正因子問題。include include int main printf d count return 0 注意 if if 如果是 if n i 0 count if i n i count 會比正確結果多一。可以用以下程式檢驗,看中間結果。include include int main ...

第二章練習

2 2 多條簡單訊息 將一條訊息儲存到變數中,將其列印出來 再將變數的值修改為一條新訊息,並將其列印出來。message this is a string.print message this is a string.message this is another string.print mess...

第二章練習

1 請用 實現 利用下劃線將列表的每乙個元素拼接成字串,li alex eric rain 該題目主要是考的字串的拼接方法,jion方法,s li alex eric rain s jion li 2 查詢列表中元素,移除每個元素的空格,並查詢以a或a開頭並且以c結尾的所有元素。li alec ar...