【发布时间】:2021-09-20 10:51:48
【问题描述】:
将使用插入排序使用二进制搜索来查找值。编码新手,所以找不到解决方案。现在,如果我输入任何值,它不会使用插入并且找不到值。
#include <stdio.h>
int main()
{
int i, low, high, mid, n, key, array[100],size;
printf("Enter number of elements");
scanf("%d",&n);
printf("Enter %d integersn", n);
for(i = 0; i <= n-1; i++)
scanf("%d",&array[i]);
void insertionSort(int array[], int size) {
for (int step = 1; step <= size-1; step++) {
int key = array[step];
int j = step - 1;
while (key < array[j] && j >= 0) {
array[j + 1] = array[j];
--j;
}
array[j + 1] = key;
}
}
printf("%d\n",key);
scanf("%d", &key);
low = 0;
high = n - 1;
mid = (low+high)/2;
while (low <= high) {
if(array[mid] < key)
low = mid + 1;
else if (array[mid] == key) {
printf("%d\n", key, mid+1);
break;
}
else
high = mid - 1;
mid = (low + high)/2;
}
if(low > high)
printf("%d\n", key);
return 0;
}
【问题讨论】:
-
您已经定义了嵌套在
main函数中的insertionSort函数。 C 不支持嵌套函数定义。 -
另外,您还没有在输入值后调用
insertionSort对数组的内容进行排序。数组元素值的二进制搜索仅在数组内容已排序时才有效。
标签: c binary-search insertion-sort