using System; namespace Lesson { class Program { static void Print(int[] arr) { for (int i = 0; i < arr.Length; i++) { Console.Write(arr[i] + " "); } Console.WriteLine(); } static void Main(string[] args) { #region 知识点一 排序的基本概念 //排序是计算机内经常进行的一种操作,其目的是将一组“无序”的记录调整为“有序的” int[] arr = new int[] { 8, 7, 1, 5, 4, 2, 6, 3, 9}; #endregion Print(arr); #region 知识点二 基本原理 //两两相比 //不停比较 //不停交换 #endregion bool isSort;//声明一个标识来保存是否进行交换的状态 #region 知识点三 代码实现 int temp; for (int i = 0; i < arr.Length; i++) { isSort = false; for (int j = 0; j < arr.Length - 1 - i; j++)//-i可以直接省去后面已经确定位置那一轮的比较 { if (arr[j] > arr[j + 1]) { isSort = true;//被交换了被表示true temp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = temp; } } if (!isSort) { break; }//如果是true就继续交换,如果没有交换就false跳过这一轮 } #endregion Print(arr); #region 知识点四 优化 //1.确定位置的数(极值)可以不用继续比了 //所以 没完成n轮 后面位置的数 就不用参与比较了 //2.特殊情况的优化 //比如在某一轮已经得到最终序列后,还会继续判断几轮,可以省去这几轮的时间 // #endregion #region 知识点五 #endregion #region 知识点六 #endregion } } }