高階 検索 (二分查詢)

2021-10-10 22:55:08 字數 1178 閱讀 8442

題目描述

輸入兩個數n和q,分別表示n個正整數和q次查詢

每次查詢乙個數字x,輸出有多少數比x小,有多少個數比x大.

輸入格式

第一行輸入 n和q(整數)

第二行輸入 n個正整數

第三行輸入 q個正整數

輸出格式

q行 每行兩個整數

為小於、大於的數

樣例輸入

10 2

2 8 3 4 1 9 2 7 4 6

5 1樣例輸出

6 40 9

提示比5小的有1、2、2、3、4、4

比5大的有6、7、8、9

資料範圍:

1≤n≤1051≤n≤105

1≤q≤1051≤q≤105

1≤x≤109

#include

#include

using

namespace std;

const

int max=

100010

;int n,q;

int a[max]

;int

getmin

(int x)

else

l=mid+1;

}return ans-1;

}int

getmax

(int x)

else

r=mid-1;

}return n-ans;

}int

main()

return0;

}

#include

#include

using

namespace std;

const

int max=

100005

;int n,q,x;

int a[max]

;void

read()

;int

main()

void

read()

else l=mid+1;

} cout<" ";

l=1; r=n;

int max=n;

while

(l<=r)

else r=mid-1;

} cout<}

陣列高階二分查詢

查詢 1 基本查詢 陣列元素無序 從頭找到尾 2 二分查詢 折半查詢 陣列元素有序 ps 陣列的元素必須有順序,從小到大或者從大到小。以下的分析是從小到大的陣列 二分查詢分析 a 先對陣列進行對半 也就是設定 min索引為0,max索引為arr.length 1,然後對半的 索引mid為 min m...

詳解二分查詢,二分查詢基礎教程 高階練習

二分查詢,就是通過每次將查詢範圍縮小一半的方法,最終鎖定目標。話不多說,直接看最基礎的二分查詢模型 輸入 乙個有序陣列,int arr 乙個目標值,int key 輸出 目標值的索引位置 二分查詢本質上是乙個遞迴查詢的過程,每一次的遞迴運算分三步 第一步,判斷陣列的正中心 center 是否為key...

迭代二分查詢二分查詢

在寫這篇文章之前,已經寫過了幾篇關於改迭代二分查詢主題的文章,想要了解的朋友可以去翻一下之前的文章 bentley在他的著作 writing correct programs 中寫道,90 的計算機專家不能在2小時內寫出完整確正的二分搜尋演算法。難怪有人說,二分查詢道理單簡,甚至小學生都能明確。不過...