作業3 查詢

2021-10-04 00:11:30 字數 897 閱讀 7368

1.問題

寫出兩種檢索演算法:在乙個排好序的陣列t[1…n]中查詢x,如果x在t中,輸出x在t的下標j;如果x不在t中,輸出j=0.

2.解析

在單調陣列中找乙個數我們第乙個會想到的就是順序查詢,這是最簡單最暴力的查詢方法,就是從頭到尾,乙個乙個的檢索;

第二種是比較常見用的也比較廣的——二分查詢。二分二分,故名思意,就是將乙個單調陣列從中間分成兩個單調陣列,通過比較中間值mid,來判斷要找的資料在左邊還是右邊的陣列中,以此類推,直到找到所要找的數,或者是最後陣列不能再分(即只有乙個元素),查詢結束。

3.設計

偽**:for(i=0;ivalue)

r=mid-1;

else return mid;

}return 0;

因為減少了很多沒必要的查詢,所以複雜度也很低,為o(log n);

為什麼是o(log n)呢?你可以想你要找x次才能把n個數找完,那麼2^x=n,推過來就是x=log n。

4.**

順序查詢:

int

sequence_search

(int a,

int value,

int n)

二分查詢:

int

binary_search

(int a,

int value,

int n)

return0;

}

Oracle作業3 簡單查詢

一 建立學生表 create table students stu id number 10 constraints pk stus id primary key,stu name varchar2 20 not null stu scores number 3 二 插入資料 insert into...

作業 C 作業3

3 2 include using namespace std int main int year,month cout 請輸入年份和月份 cin year month if month 2 if year 4 0 year 100 0 year 400 0 cout 本月29天 int main ...

連線查詢 作業

1 顯示所有員工的姓名ename,部門號deptno和部門名稱dname。select emp2.empno emp2.empname,emp2.deptno,dept.dname from emp2 dept where emp2.deptno dept.deptno select e.empno...