public class Test39{
    public static void main(String args[]){
       int[] arr={9,8,5,4,6,3,3,1,2};
       for(int i=arr.length;--i>0;){
                for(int j=0;j<i;j++){ 
                 if(arr[j]>arr[j+1]){
                   int temp=arr[j];
                   arr[j]=arr[j+1];
                   arr[j+1]=temp; 
    }
   }
  }for(int i=0;i<arr.length;i++)
         {System.out.print(arr[i]+" ");}   
 }
}求助这个程序为什么解决了数字重复的

解决方案 »

  1.   

    可以看看这个,希望对你有所帮助:http://blog.csdn.net/jacksonary/article/details/74008440
      

  2.   

    数据重复的不进行交换,也就是保存原来的顺序。你可以把程序稍微改一下,变成按照绝对值排序,就可以看出来了。
    public class Test39{
        public static void main(String args[]){
           int[] arr={9,8,-1,5,4,6,3,-3,1,2,-5};
           for(int i=arr.length;--i>0;){
                    for(int j=0;j<i;j++){ 
                     if(Math.abs(arr[j])>Math.abs(arr[j+1])){
                       int temp=arr[j];
                       arr[j]=arr[j+1];
                       arr[j+1]=temp; 
        }
       }
      }for(int i=0;i<arr.length;i++)
             {System.out.print(arr[i]+" ");}   
     }
    }