用c语言定义一个整型数组,编写一个程序,主函数调用下面几个自定义函数来完成。 (1) 自定义输入

用c语言定义一个整型数组,编写一个程序,主函数调用下面几个自定义函数来完成。(1)自定义输入函数input:输入10个无序的整数到数组中;(2)自定义排序函数sort:用... 用c语言定义一个整型数组,编写一个程序,主函数调用下面几个自定义函数来完成。
(1) 自定义输入函数input: 输入10个无序的整数到数组中;
(2) 自定义排序函数sort:用冒泡法将数组从大到小排序;
(3) 自定义函数find: 要求输入一个整数,在数组中查找找出该数。若存在,在主函数中输出其所处的位置,否则输出不存在该数。
用折半法了吗
展开
 我来答
yinfengnong
2018-06-09 · TA获得超过5619个赞
知道大有可为答主
回答量:2344
采纳率:89%
帮助的人:2354万
展开全部

代码如下:

#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;
}

运行结果:

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式