zoukankan      html  css  js  c++  java
  • 改进 优化 冒泡法排序

    代码
    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();


        }
         
        }
  • 相关阅读:
    Javascript常见全局函数
    字符串入门练习题1 好长好长的字符串 题解
    字符串入门 讲义
    初等排序 大纲
    初等排序 讲义
    排序入门练习题10 病人排队 题解
    排序入门练习题9 合影效果 题解
    排序入门练习题7 分数线划定 题解
    排序入门练习题8 整数奇偶排序 题解
    排序入门练习题6 奖学金 题解
  • 原文地址:https://www.cnblogs.com/oneroom/p/buttlesort.html
Copyright © 2011-2022 走看看