冒泡排序解析

/******
* 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;
            }

 

posted @ 2019-09-06 11:18  Mr--WANG  阅读(281)  评论(0编辑  收藏  举报