我是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);
}
上面的代码不会打印按值排序,它会按照它的索引按升序打印数组,而不是按照我想要的值来打印。
请把解决方案交给我,
提前致谢
答案 0 :(得分: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;
}
}
}