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