static void Main(string[] args) { fun1(); Console.WriteLine(" "); fun2(); Console.ReadKey(); } #region 选择 //选择 的核心是 选最大值 //以外层 arr[i] 为基准 ,和 内层循环的每个值 进行比较(arr[i] > arr[j]) //每选出一个最大值,外层循环走一步,然后上次的那个最大值就不用再参与之后的比较(j = i + 1) //5个数,第一次选最大值 还剩4个,第二次选 还剩3个 第4次还剩1个所以4次就够了(arr.Length - 1) static void fun1() { int[] arr = { 12, 35, 13, 57, 1 }; for (int i = 0; i < arr.Length - 1; i++) { for (int j = i + 1; j < arr.Length; j++) { int temp; if (arr[i] > arr[j]) { temp = arr[i]; arr[i] = arr[j]; arr[j] = temp; } Console.WriteLine(arr[0] + "," + arr[1] + "," + arr[2] + "," + arr[3] + "," + arr[4]); } } } #endregion #region 冒泡 //冒泡核心是 内层循环 两个相邻的值进行比较(arr[l] > arr[l + 1]) // 5个数只需4次比较,而且,外层循环每走一步,内层循环,之前比过的就不用再比 //所以是 l < arr.Length - k - 1 static void fun2() { int[] arr = { 12, 35, 13, 57, 1 }; for (int k = 0; k < arr.Length - 1; k++) { for (int l = 0; l < arr.Length - k - 1; l++) { int temp; if (arr[l] > arr[l + 1]) { temp = arr[l]; arr[l] = arr[l + 1]; arr[l + 1] = temp; } Console.WriteLine(arr[0] + "," + arr[1] + "," + arr[2] + "," + arr[3] + "," + arr[4]); } } }