已排序的整數陣列相關查詢返回索引問題

2021-08-21 05:30:57 字數 934 閱讀 8830

對於陣列的應用大家一定不會陌生,今天要介紹的就是兩種有關陣列中對於指定元素的查詢問題.

題目要求:

示例:

解題思路:

(1)定義左右指標left和right:left=0;right=n-1;

(2)當left小於right的時候,採用二分查詢的方法查詢指定資料,如果找到了就將left和right存起來,沒找到就返回;

**實現:

vectorsearchrange(int a, int n, int target) 

else}}

return res;

}

示例:

[1,3,5,6],5 → 2

[1,3,5,6],2 → 1

[1,3,5,6], 7 → 4

[1,3,5,6],0 → 0

解題思路:

遍歷給定陣列中的數直到找到不小於target的數為止,當前位置就是要返回的位置(如果與target相等符合題意就是該位置,如果大於target,那麼該數字以及該數字之後的向後移一位並將target插入該位置)

**實現:

這裡採用二分查詢的方法查詢指定資料target,有利於降低時間複雜度

int searchinsert(int a, int n, int target) 

}//此時沒有找到,就需要將要插入的元素與左元素比較

if(a[left]>=target)

return left;

else

return left+1;

}

求兩個已排序 公升序 等長的整數陣列所有元素的中位數

演算法課的題目,給定兩個整數陣列x,y,兩個陣列已被排序 公升序 陣列長度都是n,求這2n個數的中位數。最容易想到的是,新建立以個陣列 z 2n 將x,y的所有元素排序放入,然後取中間兩個數,不過當陣列很大時,效率不行啊。不僅空間複雜度很大,重新排序的話也要不少時間.分析 因為兩個陣列已經排序了,可...

返回整數陣列中最大子陣列的值(陣列首尾相連)

應王老師要求,返回子陣列的作業又來啦!這次的陣列是首尾相連的 先說一下我的想法,之前的作業都是可以直接遍歷整個陣列,因為陣列的長度是一定的,迴圈結束後就可以獲得到所有子陣列。但是這次作業的前提是陣列首尾相連,遍歷整個陣列是無法結束的。所以我可以先想象環狀的陣列斷開,利用二維陣列把斷開陣列的每個數被包...

返回乙個整數陣列中最大子陣列的和。

該題的意思是 如果乙個陣列為 1 5 3 19 5 3 第乙個數之後若是該數與前乙個數之和大於該數那麼將這個和替換概數 即5 1 5,5不變 而5 3 5 則將三替換為8以此類推 當乙個數與前乙個數之和再次小於這個數時,這個數為乙個下乙個的最小陣列,如5 3 19 11 5 5 則5為下乙個最小陣列...