《演算法分析與實踐》 作業3 順序查詢與二分查詢

2021-10-03 17:48:55 字數 648 閱讀 6039

在乙個排好序的陣列t[1…n]中查詢x,如果x在t中,輸出x在

t的下標j;如果x不在t中,輸出j=0。

一、順序查詢

順序查詢顧名思義就是按照順序乙個乙個找。就好像拿到一刀試卷,你要從中找到自己的,那麼你就要一張一張翻下去,直到找到自己的試卷。

在本題中,我們按照下標乙個乙個找。

**:

void

search

(int x)

}printf

("%d\n"

,j);

}

一共有乙個for迴圈,是從1到n,所以順序查詢的時間複雜度是o(n)。

二、二分查詢

二分查詢又叫對分查詢,就是把排好序(假設從小到大排好)的陣列從中間對半分開,如果中間那個數小於我們要找的數,就在陣列的前半部分再對半開,按照這個方法找。如果大於我們要找的數就在陣列的後半部分對半分開進行查詢。

**:

void

search

(int x)

}printf

("%d\n"

,j);

}

這個方法每次都取1/2。

從1/2到1/4到1/8……

所以時間複雜度為o(logn)。

歡迎批評指正~

演算法分析與實踐 作業3 檢索演算法

寫出兩種檢索演算法 在乙個排好序的陣列t 1 n 中查詢x,如果x在t中,輸出x在t的下標j 如果x不在t中,輸出j 0.順序查詢 是最簡單最暴力的查詢方法,就是從頭到尾遍歷陣列的過程。二分查詢 首先要求陣列是有序的。假設有乙個公升序排列的陣列,在該陣列中查詢元素 key。首先找出該陣列中最中間的元...

演算法分析與實踐 作業5

在包含有n個點的集合s中,找出距離最近的兩個點。設 p1 x1,y1 p2 x2,y2 pn xn,yn 是平面的n個點。嚴格地講,最近點對可能不止一對,此例輸出一對即可。利用分治求解 首先對所有的點按照x座標 或者y 從小到大排序 排序方法時間複雜度o nlogn o nlogn o nlogn ...

演算法分析與實踐 大作業

給定n個圓的半徑序列,將它們放到矩形框中,各圓與矩形底邊相切,求具有最小排列長度的原序列。一般而言我們會想到這種做法 但是這種只是其中一種,我們並沒有考慮完全,還有一些如 小球本來可以放到兩個大球的中間,不增加長度的 這個就類似於最短路的問題,由此我們想到了回溯演算法。開始時設a r1,r2,rn ...