C# BinarySearch 返回值的具體使用
binarySearch()方法的返回值為:
| 返回值 | 含義 |
|---|---|
| ≥ 0 | 找到元素,返回其在集合中的索引位置 |
| < 0 | 未找到元素,返回一個負(fù)數(shù) |
1、如果找到關(guān)鍵字,則返回值為關(guān)鍵字在數(shù)組中的位置索引,且索引從0開始
2、如果沒有找到關(guān)鍵字,返回值為負(fù)的插入點(diǎn)值,所謂插入點(diǎn)值就是第一個比關(guān)鍵字大的元素在數(shù)組中的位置索引,而且這個位置索引從1開始。
未找到時的負(fù)數(shù)值
當(dāng)元素未找到時,返回值是一個負(fù)數(shù),其計(jì)算公式為:
返回值 = ~(插入點(diǎn)索引)
或等價于:
插入點(diǎn)索引 = ~返回值
插入點(diǎn) = 如果將該元素插入集合中,它應(yīng)該所在的位置(保持排序順序)。
假設(shè)有排序數(shù)組:[10, 20, 30, 40, 50]
情況1:查找 25(不存在)
// BinarySearch 查找 25 // 應(yīng)該插入在 20 和 30 之間,也就是索引 2 的位置,但是索引從1開始,所以變成3,再取負(fù)值,就是-3 int index = BinarySearch(25); // 返回 -3 //-3使用 ~(按位取反)可以得到從0開始的插入點(diǎn)值 int insertIndex = ~index; // ~(-3) = 2 // insertIndex = 2
情況2:查找 5(比所有值都?。?/h2>
// BinarySearch 查找 5
// 應(yīng)該插入在最前面,索引 0 的位置
// 所以返回:-1
int index = BinarySearch(5); // 返回 -1
int insertIndex = ~index; // ~(-1) = 0
// insertIndex = 0
// BinarySearch 查找 5 // 應(yīng)該插入在最前面,索引 0 的位置 // 所以返回:-1 int index = BinarySearch(5); // 返回 -1 int insertIndex = ~index; // ~(-1) = 0 // insertIndex = 0
情況3:查找 60(比所有值都大)
// BinarySearch 查找 60 // 應(yīng)該插入在最后,索引 5 的位置(數(shù)組長度) // 所以返回: -6 int index = BinarySearch(60); // 返回 -6 int insertIndex = ~index; // ~(-6) = 5 // insertIndex = 5
到此這篇關(guān)于C# BinarySearch 返回值的具體使用的文章就介紹到這了,更多相關(guān)C# BinarySearch 返回值內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
使用C#編寫簡單的圖形化的可發(fā)送附件的郵件客戶端程序
這篇文章主要介紹了使用C#編寫一個圖形化的可發(fā)送附件的郵件客戶端程序的方法,文中的示例同樣是基于支持smtp協(xié)議的郵件服務(wù)器,需要的朋友可以參考下2016-02-02

