日期:2014-05-19  浏览次数:20905 次

c#写的冒泡优化,不知道是否还能优化!
我是初学着,用了好几个小时才出这,累死了!    
希望高手们能给点建议,看是不是还能在优化点!    

///   <summary>
///   冒泡排序
///   </summary>
///   <param   name= "myArray "> 数组 </param>
///   <param   name= "arrLenght "> 数组长度 </param>
///   <param   name= "order "> 排序:默认为降序。asc:升   desc:降序   </param>
///   <returns> </returns>
private   int   MaoPao(int[]   myArray,   int   arrLenght,   string   order)
{
    /*return     0--表示排序失败       1--表示排序成功*/
    if   (myArray.Length   <   1   )
            return   0;
             
    order   =   order.ToLower();
    int   j,i;
    int   begin_ChangeIndex   =   0;//最近的交换位置
    int   change;   //若本轮冒泡没有交换数据,则表示排序成功,退出


    /*   最外层循环,冒泡排序需要比较   myArray.Length-1   轮   */
    for   (i   =   0;   i   <   arrLenght   -   1;   i++)
    {
          change   =   0;

          //下轮冒泡只要冒到该位置即可
          int   end_head;
          end_head   =   begin_ChangeIndex;

          //把排序出来最大的放在最后
          for   (j   =   arrLenght   -   1;   j   > =   1   +   end_head;   j--)
          {
                if   (myArray[j]   >   myArray[j   -   1])
                  {
                      int   temp   =   myArray[j];
                      myArray[j]   =   myArray[j   -   1];
                      myArray[j   -   1]   =   temp;
                      change   =   1;//发生了交换,故将交换标志置为真
                      begin_ChangeIndex   =   j;
                    }
          }
          if   (change==0   )
            {
                if   (order+ " "   ==   "asc ")
                {
                  for   (j   =   arrLenght   -   1,   i   =   1;   j   > =   0;   j--,   i++)
                                                Response.Write( "第 "   +   i   +   "数 "   +   myArray[j]   +   " <br> ");   //小冒泡排序