一、冒泡排序
趟数和次数:
每趟出来一个最小(最大)的数。
每次比较相邻的两个数,按要求交换位置。
int[] a = new int[8] { 9, 21, 8, 13, 16, 22, 7, 6 }; Console.WriteLine("************排序之前*************"); for (int i = 0; i < a.Length; i++) { Console.Write(a[i] + " "); } Console.WriteLine(); //排序 for (int i = 1; i<=a.Length-1; i++) //趟数 n-1 { for (int j = 1;j<=a.Length-i ; j++) //每趟中比较的次数 n-i { if (a[j - 1] > a[j]) { int temp = a[j - 1]; a[j - 1] = a[j]; a[j] = temp; } } } Console.WriteLine(); Console.WriteLine("************排序之后*************"); for (int i = 0; i < a.Length; i++) { Console.Write(a[i] + " "); } Console.WriteLine();
二、二分查询
前提:数组必须是有序的。
int[] a = new int[] { 22, 21, 16, 13, 9, 8, 7, 6 }; //从键盘接收要查找的数。 int find = Convert.ToInt32(Console.ReadLine()); int maxsub, minsub, midsub; minsub = 0; maxsub = a.Length - 1; for (;maxsub >= minsub ; ) { midsub = (maxsub + minsub) / 2; //求中间下标 if (a[midsub] == find) //看看找到了没有? { Console.WriteLine("恭喜找到了,在第" + midsub + "个位置上"); break; } else //这次没找到 { if (a[midsub] > find) //扔掉上半 { minsub = midsub + 1; } else //扔掉下半 { maxsub = midsub - 1; } } }