【发布时间】:2017-10-27 09:38:14
【问题描述】:
谁能帮我修复这个代码? main 确实填充了一个从 1 到 1000 的 1000 个随机数的数组,当它进入函数时,它按升序排序并遵循二进制搜索,但问题是它没有打印出任何东西。
int f10(int array[], int size)
{
int temp; // temporary swap variable
cout << "Ascending Order:" << endl;
for (int x = 1; x <= size; x++)
{ //how times
for (int j = 1; j <= size; j++)
{
if (array[j] > array[j + 1])
{
//we need to swap
temp = array[j]; //temp is holding the first value
array[j] = array[j + 1]; //
array[j + 1] = temp; //temp holds the second value
}
}
}
for (int x = 1; x <= size; x++)
{
cout << array[x] << ", ";
}
int value;
cout << "\nGimme a number to search:\n\t";
cin >> value;
int left = array[1], right = array[1000];
while (left < right)
{
int middle = (left + right) / 2;
if (array[middle] == value)
{
return middle;
}
else if (array[middle] > value)
{
right = middle - 1;
}
else
{
left = middle + 1;
}
}
return -1;
}
【问题讨论】:
-
我无法编译图像。
-
数组索引从 0 开始。
-
如果它真的不打印任何东西(甚至是“升序:”),那么你就不要调用它,或者它是 windows 而不是控制台应用程序。
-
它会打印所有数字,但是当用户输入数字进行搜索时,它不会打印任何内容。
-
您好,请清理您的代码示例的缩进。
标签: c++ arrays sorting binary-search