2014-09-29 44 views
-2

我是新來的C++,我有一個排序有rand()函數生成的隨機值的數組的問題。 數組長度爲100,數值由0到9的隨機數填充(0,1,2,3,4,5,6,7,8,9)。排序隨機值數組由數值遞增

我已經成功確定數組的值,但仍然失敗時,我想基於它的值遞增排序數組。由此,這意味着當我打印數組值時,它可能不會被它的索引排序,而是被它的值所排序。

像這樣:

X [10] = 0;

X [1] = 1;

X [60] = 2; ...等等直到X [99] = ...

這裏是確定值並對其進行排序的代碼,我在這裏有什麼錯誤?請幫助..

int length= 100; 
X = new int[length]; 

int i; 
int j; 
int temp; 


//determining the array value 
for (i = 0; i < length; i++) { 
    X[i] = rand() % 10; 
} 

//sorting 
for (i = 0; i < length; i++) { 
    for (j = 0; j < length; j++) { 

     if (X[i] < X[j]) { 
      temp = X[j]; 
      X[j] = X[i]; 
      X[i] = temp; 
     } 

    } 
} 

//print the array 
for (i = 0; i < length; i++) { 
    cout << "X[" << i << "] = " << X[i] << "\n"; 
    Sleep(10); 
} 

以上代碼將不打印排序按價值計算,其印刷而成的指數排序遞增的陣列,而不是由它就像我上面所說的要值。

請遞給我解決這個,

在此先感謝

+2

如果這是一個任務或者有一個很好的理由讓你寫你自己的排序,你應該提到的是,在問題。否則,使用'std :: sort'。 – juanchopanza 2014-09-29 06:27:26

+0

@juanchopanza它不是一個任務,它只是我想學習C++排序我的自我,但我得到了這個問題。我將對這個問題進行編輯 – codelop 2014-09-29 06:31:16

+0

在開始排序之前,將值放入數組*中。 – molbdnilo 2014-09-29 06:33:53

回答

0

您正在嘗試初始化,並在同一循環數組排序。

- 首先初始化數組:

for (i = 0; i < length; i++) { 
    X[i] = rand() % 10; 
} 

那麼此數組排序:(以下排序方法是插入排序,如果你想加快你可以使用計數排序,因爲該數組僅包含數字的過程。 )

for (i = 0; i < length; i++) { 
for (j = i+1; j < length; j++) { 
    if (X[i] > X[j]) { 
     temp = X[j]; 
     X[j] = X[i]; 
     X[i] = temp; 
    } 

} 

}

+0

是的,我所做的,完全取決於您在此處編寫的代碼。那麼,你有沒有想法如何克服這個問題? – codelop 2014-09-29 06:38:57

+0

@codelop仔細看看他的第二個循環和if語句。 – IllusiveBrian 2014-09-29 06:46:19

+0

我剛把你的循環分成2個不同的部分,這是主要的問題。你正試圖在一個方面完成這兩個步驟。 – Hakes 2014-09-29 06:48:46