我正在寫的獲取和int
其大小的數組的函數:陣列分函數
void partition(int data[], int size)
數組的第一元素被分配給一個名爲val
變量,函數需要分區數組使得val
左側的元素小於val
,右側的元素更大。
例如,
如果陣列是:
5 2 10 4 1 12 7
(val
變得5
)輸出應該
2 4 1 5 10 12 7
的順序並不重要所以1 2 4 5 12 7 10
也有效輸出
所以我寫了這個代碼:
void partition(int data[], int size)
{
int val = data[0];
int i = 0, j = size - 1;//array indices
while (i != j)
{
while (data[i] < val)
i++;
while (data[j] > val)
j--;
swapInArray(data, i, j);
}
}
除非得到與相當於val
元素的數組,工作正常。
例如:7 8 5 176 18 19 7 12 44
'while(data [i] <= val)'而不是'while(data [i]
它沒有幫助,而且現在改變它現在程序崩潰,即使輸入它在更改之前工作 – user4464936
另一個問題是使用'while(i!= j)'而不是'while(i