需求:定义方法【数组[Int]/列表[Int],x:Int】 ,找到x在数组中的位置 [二分查找] (index,List)
object FindIndex {
def main(args: Array[String]): Unit = {
var list = List(1, 3, 9, 2, 6, 4, 7, 5)
var x = 6
var result = findIndex(list, x)
print(result)
}
def findIndex(list: List[Int], x: Int): (Int, List[Int]) = {
//对list列表进行排序
val list1 = list.sorted
//定义左索引边界
var low = 0
//定义右索引边界
var high = list1.length - 1
//low<=high 则循环
while (low <= high) {
//获取中间索引
var index = (low + high) / 2
//如果中间值与输入值相等,则直接返回中间索引和排序后的列表
if (list1(index) == x)
return (index, list1)
else if (x > list1(index))
//如果中间值小于输入的值,则将左索引边界重新赋值为中间值+1
low = index + 1
else
//如果中间值大于输入的值,则将左索引边界重新赋值为中间值+1
high = index - 1
}
//如果出现low>high,退出循环,说明输入值在列表中不存在,返回-1和排序后的列表,
return (-1, list1)
}
}