C#学习笔记—数组的折半查找(二分查找)

//方法类 using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Cp7 { class Search { public static void Import(int[] nums) //让用户输入数字,存入数组中,对数组进行排序 { for (int i = 0; i < nums.Length; i++) //让用户输入数字,存入数组中 { Console.Write("请输入第{0}个数字:", i + 1); nums[i] = Int32.Parse(Console.ReadLine()); Console.Write("是否需要输入(y:继续/其他:停止):"); string a = Console.ReadLine(); if(a == Convert.ToString('y')) { continue; } else { break; } } for(int i=0;inums[j]) { int temp; temp = nums[i]; nums[i] = nums[j]; nums[j] = temp; } } } } public static int BinarySearch(int key, int[] nums) //用折半查找,查找用户输入的数字 { int low = 0; int high = nums.Length - 1; int middle; while (low <= high) { middle = (low + high) / 2; if (key > nums[middle]) { low = middle + 1; //查找数组后部分 } else if (key < nums[middle]) { high = middle - 1; //查找数组前半部分 } else { return middle; //找到用户要查找的数字,返回下标 } } return -1; //没有找到用户查找的数字,返回-1 } } } //测试类 using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Cp7 { class Test { public static void Main(string[] agrs) { int[] num = new int[100]; Search.Import(num); Console.Write("请输入一个你要查找的数:"); int key = Int32.Parse(Console.ReadLine()); int m = Search.BinarySearch(key, num); if (m == -1) { Console.WriteLine("没有找到你要查找的数"); } else { Console.WriteLine("找到你要查找的数,下标为{0}", m); } } } }

你可能感兴趣的:(C#)