二分搜索
<2>找出最大值和第二大值 时间复杂度O(n)
class Program
{static void Main(string[] args){List<int> list = new List<int> { 10, 3, 6, 4, 7, 1, 9, 2 };var v = getMax(list, 0, list.Count - 1);}static (int, int) getMax(List<int> list, int start, int end){if (start!=end){int middle = (start + end) / 2;var left = getMax(list, start, middle);var right = getMax(list, middle + 1, end);var temp = new List<int> { left.Item1, left.Item2, right.Item1, right.Item2 };temp.Sort();return (temp[2], temp[3]);}elsereturn (int.MinValue, list[start]);}
}