改进 优化 冒泡法排序

代码
class BubbleSort

    {
    
public    int count=0;
        
public void Sort(int[] arr)
        {
            
int i, j, temp;
            
bool done=true ;
            
            j 
= 1;
            
while ((j < arr.Length) && (done))//判断长度
            {
                done 
= false;
                
for (i = 0; i < arr.Length - j; i++)
                {
                    
if (arr[i] > arr[i + 1])
                    {
                        done 
= true;
                        temp 
= arr[i];
                        arr[i] 
= arr[i + 1];//交换数据
                        arr[i + 1= temp;
                        count
++;
                    }
                }
                j
++;
            }
        }
        
        
static  void print(int[] mIntArr)
      {
          
          
foreachint i in mIntArr)
          Console.Write(
" {0} ",i);
      }
      
  
static void Change(ref int i1,ref int i2)
      {
          
int tmp;
          tmp
=i1;
          i1
=i2;
          i2
=tmp;
      }
      
 
static     void bubbleSort(int[] a,out int n)
      {
           n
=0;
             
bool bIsNeedRoop = false;
            
for(int i = 0;i < a.Length;i++)
            {
                bIsNeedRoop 
= false;
                
for(int j = 0;j < a.Length-i-1;j++)
                {
                    
if(a[j] > a[j+1])
                    {
                        Change(
ref a[j],ref a[j+1]);
                        bIsNeedRoop 
= true;
                        n
++;
                    }
                }
                
//如果查询一次后发现不需交换,说明已经排完序
                
//可以直接退出
                if(!bIsNeedRoop) return;
            }
      }
 
 
 
static     void bubbleSortBad(int[] a,out int n)
      {
           n
=0;
              
            
for(int i = 0;i < a.Length-1;i++)
            {
             
                
for(int j = 0;j < a.Length-i-1;j++)
                {
                    
if(a[j] > a[j+1])
                    {
                        Change(
ref a[j],ref a[j+1]);
                         
                        
                    }
                    n
++;
                }
             
                 
            }
      }
            
         
         
static void Main()
      {
          
int[] arrInt={6,1,2,3,5};
          
int[] arrInt2= (int[])arrInt.Clone();
      
int count;
       print(arrInt);
       bubbleSort(arrInt,
out count);
       Console.WriteLine(
"优化冒泡排序总共遍历了{0}次",count);
       print(arrInt);
       Console.WriteLine();
             
      
int count2;
       print(arrInt2);
       bubbleSortBad(arrInt2,
out count2);
       Console.WriteLine(
"冒泡排序总共遍历了{0}次",count2);
       print(arrInt2);
       
       
       
      
// Console.WriteLine(arrInt.ToString());
     Console.ReadKey();


    }
     
    }
原文地址:https://www.cnblogs.com/oneroom/p/buttlesort.html