C# 冒泡排序

   /// <summary>

   /// 冒泡排序

        /// </summary>
        public string Sort(int[] scoreArray)
        { 
            if(scoreArray.Length == 0)
            {
                return "数组无值";
            }
 
            #region 核心算法
    //n个数两两对比,比较n-1次即可
            for (int i = 0; i < scoreArray.Length-1; i++)          // i
            {
      //排完一轮,最大的数已经排到了最后面,-i是为了固定已经排好的最值,并有缩小范围的作用
                for (int j = 0; j <scoreArray.Length-1-i ; j++)     // j
                {
        //如果前面的大鱼后面的,将大的放到后面
                    if (scoreArray[j] > scoreArray[j + 1])  
                    { 
                        //交换
                        int temp = scoreArray[j];
                        scoreArray[j] = scoreArray[j + 1];
                        scoreArray[j + 1] = temp;
                    }
                }
            }
            #endregion 核心算法
 
            StringBuilder s = new StringBuilder(10);
            foreach (int item in scoreArray)
            {
                s.Append(item.ToString()+",");
            }
            s = s.Remove(s.Length - 1, 1);
            return s.ToString();
        }
 
            解释:            
             i:比较了多少轮
            -i:每一轮排除上一轮已经比较出的最大/最小值(相对于每一轮的最大/最小值)的个数
 
            第1轮  排除0个
            第2轮  排除1
            。。。
            第n轮  排除n-1
 
            总共有需要多少轮?也就是n是多少?很容易想到length-1,假设数组长度为2,那么比较一次就OK了。最后一轮排除的最大/最小值的个数是: length-2
            得出外层循环的写法  for (int i = 0; i < scoreArray.Length-1; i++)    ,此处i的最大值为scoreArray.Length-2应该很容易想明白!
 
 
    补充:要将n个数进行排序,那么要排多少轮呢?n-1轮,第一轮选出最大的,第二轮选出第二大的。。最后一轮选出次最小的(这一轮只剩两个数了),剩下的就是最小的不用再进行比较!
             第一轮的比较范围是1至n
     第二轮的比较范围是1至n-1
     。
     。
     。
     最后一轮的比较范围是1至2。
             
            //i 为要对比的轮数
    for(int i=0; i<n-1; i++)
    {
                  //j为每轮比较的范围
      for(int j=0; j<n-i-1)
      {
                        //这一轮中的相邻两个数两两对比
        if(a[j]>a[j+1])
        {
          //如果下面的气泡比上面的大,则让下面的气泡冒到上面
          int temp = a[j];
          a[j] = a[j+1];
          a[j+1]=temp;
        }
      }
    }
 
 
 
原文地址:https://www.cnblogs.com/Ellfelo/p/Effio.html