/// <summary> /// 使用二分法和斐波那契查找ip /// </summary> /// <param name="ipAddr">要查找的ip</param> /// <param name="ipRecords">所有的ip</param> public static void SearchIpRecord(string ipAddr, IpRecord[] ipRecords, out SearchRecord binary_recorder, out SearchRecord fibonacci_recorder) { if (!IsStrRegex(ipAddr)) { throw new FormatException(); } Stopwatch sw = Stopwatch.StartNew(); searchService.Binary_Search(ipRecords, ipAddr.IpAddressToInt(), out binary_recorder); sw.Stop(); binary_recorder.ElapsedMilliseconds = sw.Elapsed.TotalMilliseconds; sw.Restart(); searchService.Fibonacci_Search_Improved(ipRecords, ipAddr.IpAddressToInt(), out fibonacci_recorder); sw.Stop(); fibonacci_recorder.ElapsedMilliseconds = sw.Elapsed.TotalMilliseconds; if (binary_recorder.Index != fibonacci_recorder.Index) { throw new Exception("算法出错, 查找结果不同!"); } }