BinarySearch() 用于对已排序的列表进行搜索,如果找到相等的元素,则返回从零开始的索引号,如果找不到,则返回一个负数,该负数是下一个元素的索引的按位补码。
using System;
using System.Collections.Generic;
namespace ConsoleApp4
{
class Program
{
static void Main(string[] args)
{
List<int> list = new List<int>();
list.Add(3);
list.Add(1);
list.Add(5);
Console.WriteLine("排序前");
Print(list);
list.Sort();
Console.WriteLine("排序后");
Print(list);
//二叉搜索,寻找合适的插入位置
int idx = list.BinarySearch(2);
//如果找不到,则将返回一个负数,该负数是下一个元素的索引的按位补码
if (idx < 0) idx = ~idx;
Console.WriteLine("应在list[{0}]插入{1}", idx, 2);
list.Insert(idx, 2);
Print(list);
Console.ReadKey();
}
public static void Print(List<int> list)
{
list.ForEach(x => Console.Write(x + " "));
Console.WriteLine();
}
}
}