2015-05-23 38 views
-1

我想排序數組a,但我想要排序的數組保存在數組b中,並且數組a保持未排序?我怎樣才能做到這一點?java如何排序到新陣列

我已經試過Arrays.sort(一)方法,我已經得到了這個一小段代碼,但是當我嘗試接取一個,它是永諾排序:\

public static int[] sortArray(int a[]){ 
    int b[] = a; 
    int len=b.length; 
    int temp; 
    for(int i=0;i<len-1;i++) { 
     for(int j=0;j<len-1;j++){ 
      if(b[j]>b[j+1]){ 
       temp=b[j+1]; 
       b[j+1]=b[j]; 
       b[j]=temp; 
      } 
     } 
    } 
    return b; 
} 

回答

0

聲明INT b [] =新INT [則爲a.length]然後每個元素複製像:

for(int i = 0; i < a.length; ++i) { 
b[i] = a[i]; 
} 

全碼:

public static int[] sortArray(int a[]){ 
    int b[] = = new int[a.length] 
for(int j = 0; j < a.length; ++j) { 
    b[j] = a[j]; 
    } 
    int len=b.length; 
    int temp; 
    for(int i=0;i<len-1;i++) { 
     for(int j=0;j<len-1;j++){ 
      if(b[j]>b[j+1]){ 
       temp=b[j+1]; 
       b[j+1]=b[j]; 
       b[j]=temp; 
      } 
     } 
    } 
    return b; 
} 
+0

'++ i'不會爲什麼不行 – Kon

+0

@Kon?當然,它的作品。 –

+0

如果我使用++ i,它總是有效 – Injury

2
int[] a = new int[]{5,2,4,8,4,5}; 
int[] b = Arrays.copyOf(a, a.length); 
Arrays.sort(b); 

內容:
一個:[5,2,4,8,4,5]
B:[2,4,4,5,5,8]

1

的問題是你不創建一個新的陣列b,你只是b另一個參考a。我會用創建b

int[] b = Arrays.copyOf(a, a.length); 

然後使用Arrays.sort(b)產生排序b陣列,而不影響a

2

你需要做一個深拷貝的a,然後排序並返回複製:

public static int[] sortArray(int a[]){ 
    int[] b = Arrays.copyOf(a, a.length); 
    Arrays.sort(b); 
    return b; 
}