練習 根據和值查詢陣列中組合

2021-07-11 02:58:49 字數 1662 閱讀 3638

一. 習題與分析

題目:已知集合s,和乙個整數x,求集合s中任意兩個元素和值等於x的元素組合。演算法要求時間複雜度為o(n*log(n))

分析:1)組合情況總共有n*(n-1)/2,若是一一測試,時間複雜度不夠。

2)可以先進行排序,符合這個時間複雜度的排序,然後確定乙個元素,通過二分法查詢另一元素存在情況。二分法時間複雜度為log(n)肯定符合要求。

二. **實現

1、調整日誌類,可以鏈式呼叫

template

class loginfo

;//輸出狀態資訊

loginfo* showstate(string strinfo, int nnum, string strother);

loginfo* showstate(string strinfo, int nnum);

loginfo* showstate(string strinfo);

loginfo* showstate(datatype key);

loginfo* showline();

//展示陣列內容

loginfo* showarray(datatype parray, int nsize)

cout

<< endl;

return

this;

};};

2、二分法查詢實現

//二分查詢,返回元素位置,多個元素返回最小的下標

int binarysearchmin(t testarray, int nsize, int nbegin, t key)

else

}return nmid;

}else

if (testarray[nmid] < key)

else

if (testarray[nmid]>key)

nmid = nstart + (nend - nstart) / 2;//防止資料溢位,學習到了

}return -1;

}

3、問題解決

//給定元素集合,與乙個數,求這個集合任意兩個元素和等於該元素的集合。演算法複雜度o(nlog(n))

void serchtwoelementplusequalone(t testarray, int nsize, t sum)

else}}

}log.showstate("一共查詢到:", ncount, " 組組合")->showline();

}

4、測試**

#include

#include

#include"codetest.h"

#define n_max 9

int main()

5、結果輸出

三. 經驗總結

1、return this 返回指標型別,不是物件。

2、指標呼叫函式不能用.應該用->

四. 後續計畫

進行演算法導論的練習,暫時不進行c++基礎練習。多個目標導致自己有點混亂,目標不明確。暫時就這樣吧。

js 根據值來查詢所在陣列的位置(索引值)

一 indexof 方法可返回某個指定的字串值在字串中首次出現的位置。indexof 方法可返回陣列中某個指定的元素位置。該方法將從頭到尾地檢索陣列,看它是否含有對應的元素。開始檢索的位置在陣列 start 處或陣列的開頭 沒有指定 start 引數時 如果找到乙個 item,則返回 item 的第...

JS中根據指定值刪除陣列中的元素

原生js 如果想刪除陣列,有乙個函式 splice 刪除元素,並向陣列新增新元素。splice是根據陣列內的下標 也就是索引來 刪除元素的比如 var arry a b c d arry.splice 2,1 alert arry 下標為 2 也就是 c 給刪除了。那麼現在我們在很多場景中,需要用到...

跟提供的值獲取在對應陣列中的下標 根據值獲取下標

根據值獲取在陣列中對應的下標 getarrayindex arr any,obj any return i 這裡的 any是ts 規則可以省去 arr 對應的陣列 obj 對應的具體值 例子 getarrayindex arr any,obj any return i mounted 獲取到e在ar...