題目:請給出乙個執行時間為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...