
用c语言定义一个整型数组,编写一个程序,主函数调用下面几个自定义函数来完成。 (1) 自定义输入
用c语言定义一个整型数组,编写一个程序,主函数调用下面几个自定义函数来完成。(1)自定义输入函数input:输入10个无序的整数到数组中;(2)自定义排序函数sort:用...
用c语言定义一个整型数组,编写一个程序,主函数调用下面几个自定义函数来完成。
(1) 自定义输入函数input: 输入10个无序的整数到数组中;
(2) 自定义排序函数sort:用冒泡法将数组从大到小排序;
(3) 自定义函数find: 要求输入一个整数,在数组中查找找出该数。若存在,在主函数中输出其所处的位置,否则输出不存在该数。
用折半法了吗 展开
(1) 自定义输入函数input: 输入10个无序的整数到数组中;
(2) 自定义排序函数sort:用冒泡法将数组从大到小排序;
(3) 自定义函数find: 要求输入一个整数,在数组中查找找出该数。若存在,在主函数中输出其所处的位置,否则输出不存在该数。
用折半法了吗 展开
1个回答
展开全部
代码如下:
#include <stdio.h>
#include <stdlib.h>
#define N 10
void input(int data[], int n)
{
int i;
printf("请输入%d个整数:", n);
for (i = 0; i < n; i++) {
scanf("%d", &data[i]);
}
}
void sort(int data[], int n)
{
int i, j, temp;
for (i = 0; i < n - 1; i++) {
for (j = 0; j < n - i - 1; j++) {
if (data[j] < data[j + 1]) {
temp = data[j];
data[j] = data[j + 1];
data[j + 1] = temp;
}
}
}
}
void print(int data[], int n)
{
int i;
for (i = 0; i < n; i++) {
printf("%d ", data[i]);
}
printf("\n");
}
int find(int data[], int n, int val)
{
int i;
for (i = 0; i < n; i++) {
if (data[i] == val) {
return i;
}
}
return -1;
}
// 折半查找
int binary_find(int data[], int n, int val){
int low, high, mid;
low = 0;
high = n - 1;
while (low <= high) {
mid = (low + high) / 2;
if (data[mid] == val)
return mid;
if (data[mid] > val) {
low = mid + 1;
}
if (data[mid] < val) {
high = mid - 1;
}
}
return -1;
}
int main()
{
int data[N], val, i;
input(data, N);
sort(data, N);
print(data, N);
printf("请输入一个需要查找的数:");
scanf("%d", &val);
// 折半查找
i = binary_find(data, N, val);
if (i != 0) {
printf("数字 %d 在数据组中第 %d 个位置。\n", val, i + 1);
}
else {
printf("数字 %d 在数据组中不存在。\n", val);
}
system("pause");
return 0;
}
运行结果:
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询