我正在写的获取和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