下面两排序算法哪个效率高?请详细分析一下哈~~class PaiXu{
    public static void main(String[] args){
           int[] a= {4,6,2,7,8,9,1,3,0,5};
              //算法一
             /*for(int i=0;i<a.length;i++){
               for(int j=i+1;j<a.length;j++){
                   if(a[j]<a[i]){
                      int temp=a[i];
                      a[i]=a[j];
                      a[j]=temp;
                  }
              }
          }*/
         //算法二
         for(int i=0;i<a.length;i++){ 
             int k=i;
             for(int j=k+1;j<a.length;j++){
                 if(a[j]<a[k]){
                    k=j;
                }
             }
                if(k!=i){
                 int temp=a[i];
                      a[i]=a[k];
                      a[k]=temp;  
                }
            
            System.out.print(" "+a[i]);
        }
    }
}

解决方案 »

  1.   

    效率差不多吧,算法2稍微好一点
    算法1频繁SWAP数据,而算法2只是先记录最小值的序号,最好才SWAP一次
      

  2.   

    算好一是冒泡排序,算法二是选择排序
    从时间复杂度上,两者都一个级别的,是O(n^2).具体是:连加号(下面是i=1,上面是n)i,就是从1加到n.
    但如果具体到一组数,所需时间就有可能不一样.正如4楼所说的.
    其实选择排序就是冒泡的一种优化来的.
      

  3.   

    当然是第二个算法效率高了,第一个是冒泡排序,算法二是选择排序,
    从时间复杂度上,两者都一个级别的,是O(n^2).具体是:连加号(下面是i=1,上面是n)i,就是从1加到n.