1 /****** 2 * List<int> vs = new List<int>() { 98,34, 23, 12, 13, 43, 23, 56,73}; 3 * var result= GetList(vs); 4 * 冒泡排序是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。 5 * 走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。 6 * 7 * 比较的总次数就是 (9-1)+(9-2)+(9-3)+(9-4)+(9-5)+(9-6)+(9-7)+(9-8) 8 * 即 8+7+6+5+4+3+2+1=36(次) 9 * ***********/ 10 private static List<int> GetSortList(List<int> arrList) 11 { 12 //count 这个是用来记录总共进行了多少次比较 13 int count = 0; 14 //记录需要进行的轮数 总共需要进行多少轮循环 例如9个数 那么需要进行的轮数就是9-1次 15 for (int i = 0; i < arrList.Count; i++) 16 { 17 //这个是每一轮比较的次数 18 for (int j = 0; j < arrList.Count - 1 - i; j++) 19 { 20 count++; 21 Console.WriteLine($"比较的次数{count}"); 22 //比较这两个数 如果 23 if (arrList[j] > arrList[j + 1]) 24 { 25 #region 使用变量存储的方法 26 /*var temp = info[j]; 27 info[j] = info[j+1]; 28 info[j+1] = temp;*/ 29 #endregion 30 31 #region 不使用变量的另一种写法 变量之间的赋值 32 arrList[j] = arrList[j + 1] + (arrList[j + 1] = arrList[j]) * 0; 33 #endregion 34 35 #region //不使用变量的另一种写法 加法的交换律 36 /*info[j] = info[j] + info[j + 1]; 37 info[j + 1] = info[j] - info[j + 1]; 38 info[j] = info[j] - info[j + 1];*/ 39 #endregion 40 } 41 //循环输出每次比较之后的结果 42 arrList.ForEach(o => { Console.Write(o + "-"); }); 43 //换行输出 44 Console.WriteLine("\r\n"); 45 } 46 } 47 return arrList; 48 }