2017-07-06 79 views
-2

當我試圖按升序方式排列2個數組時,我被卡住了。 例如,我有:按升序排列2個數組 - C編程

X[] = {4,2,8,2} 
Y[] = {12,12,6,12} 

我想安排X []以升序,但如果我在陣列上改變的值的地方,對Y上的相同的值[]數組也將改變到一樣的地方。

結果:

X[] = {8,4,2,2} 
Y[] = {6,12,12,12} 

非常感謝!

+2

你的代碼在哪裏!?顯示你的代碼,我們試圖瞭解問題的位置。 –

+2

@David不清楚你在問什麼。 –

+1

_ascending order_ - >降序 – BLUEPIXY

回答

1

您探微得,排序時,在同一時間

這裏移動2個陣列元件是用冒泡排序一個爲例:(帶n您的陣列的長度)

for(int last=0; last<n; last++) 
{ 
    for(int new=0; new<n-1; new++) 
    { 
     if(X[new]>X[new+1]) 
     { 
      int temp = X[new+1]; 
      X[new+1] = X[new]; 
      X[new] = temp; 

      temp = Y[new+1]; 
      Y[new+1] = Y[new]; 
      Y[new] = temp; 
     } 
    } 
} 

就像這樣(在移動陣列元素的循環中複製)

+0

非常感謝,乾淨,快速。 – David

0

選擇一個任意排序函數。例如氣泡排序。修改該功能,以便對兩者執行相同的操作。

void swap(long *a, long *b) 
{ 
    int t=*a; 
    *a=*b; 
    *b=t; 
} 

void bubble_sort(long list[], long n, long extra[]) 
{ 
    long c, d, t; 

    for (c = 0 ; c < (n - 1); c++) 
    for (d = 0 ; d < n - c - 1; d++) 
     if (list[d] > list[d+1]) 
     { 
     swap(list[d], list[d+1]); 
     swap(extra[d], extra[d+1]); 
     } 
}