順序表應用6 有序順序表查詢

2021-08-09 10:36:27 字數 1106 閱讀 8204

time limit: 1000ms

memory limit: 4096kb

submit

statistic

discuss

problem description

順序表內按照由小到大的次序存放著n個互不相同的整數,任意輸入乙個整數,判斷該整數在順序表中是否存在。如果在順序表中存在該整數,輸出其在表中的序號;否則輸出「no found!"。

input

第一行輸入整數n (1 <= n <= 100000),表示順序表的元素個數;

第二行依次輸入n個各不相同的有序非負整數,代表表裡的元素;

第三行輸入整數t (1 <= t <= 100000),代表要查詢的次數;

第四行依次輸入t個非負整數,代表每次要查詢的數值。

保證所有輸入的數都在 int 範圍內。

output

輸出t行,代表t次查詢的結果,如果找到在本行輸出該元素在表中的位置,否則本行輸出no found!

example input

10

1 22 33 55 63 70 74 79 80 87

455 10 2 87

example output

4

no found!

no found!

10

思路:這個題看似很簡單,就是每次輸入就遍歷順序表一遍看看有沒有這個元素存在,當我們寫出**的時候發現用時大約在4000ms左右已經超時了,所以我們就要優化方法,從快排上面找思路,這個題目已經說明該順序表是有順序的。所以我們設定乙個mid變數作為順序表的中間元素,low作為順序表的開始,high作為結束。如果要比較額數是大於mid的話就不用關心左半部分,只關心右半部分,再次遞迴知道high值和low值重合即可完成操作。
#includeusing namespace std;

#define max 0x3f3f3f

typedef int elemtype;

typedef struct

sqlist;

void initlist(sqlist &l)

void creat(sqlist &l,int n)

else if(x

順序表應用6 有序順序表查詢

time limit 7ms memory limit 700k 順序表內按照由小到大的次序存放著n個互不相同的整數 1 n 20000 任意輸入乙個整數,判斷該整數在順序表中是否存在。如果在順序表中存在該整數,輸出其在表中的序號 否則輸出 no found 第一行輸入整數n,表示順序表的元素個數 ...

順序表應用6 有序順序表查詢

time limit 7ms memory limit 700k 有疑問?點這裡 順序表內按照由小到大的次序存放著n個互不相同的整數 1 n 20000 任意輸入乙個整數,判斷該整數在順序表中是否存在。如果在順序表中存在該整數,輸出其在表中的序號 否則輸出 no found 第一行輸入整數n,表示順...

順序表應用6 有序順序表查詢

time limit 7ms memory limit 700k 有疑問?點這裡 順序表內按照由小到大的次序存放著n個互不相同的整數 1 n 20000 任意輸入乙個整數,判斷該整數在順序表中是否存在。如果在順序表中存在該整數,輸出其在表中的序號 否則輸出 no found 第一行輸入整數n,表示順...