编写下列函数:
(1)void insert_sort(int a[], int n):实现数组从小到大排序;
(2)bool binary_search(int v[], int n, int x):数组v[]升序排列,查找x,有则返回true,否则,返回false 。
测试代码为:
#include <stdio.h>
#include <stdbool.h>
void insert_sort(int a[], int n);
bool binary_search(int v[], int n, int x);
int main(void)
{
int n, m;
scanf("%d%d", &n, &m);
int a[n];
for (int i = 0; i < n; i++)
{
scanf("%d", &a[i]);
}
insert_sort(a, n);
bool ans = binary_search(a, n, m);
if (ans)
printf("Found!\n");
else
printf("Not Found!\n");
return 0;
}
/* 你的代码将被嵌在这里 */
Input Description
第一行输入两个整数n和m,n>0为数组元素个数,m为待查找的整数。
第二行输入n个整数,为数组元素。
Output Description
如果找到则输出Found!,否则输出Not Found!
Sample Input
10 47
11 34 82 7 64 98 47 18 79 20
Sample Output
Found!
void insert_sort(int a[], int n){
int b=0;
int d=0;
int c=0;
while(b<(n-1)){
c=b+1;
while(c<n){
if(a[b]>a[c]){
d=a[b];
a[b]=a[c];
a[c]=d;
}
c++;
}
b++;
}
}
bool binary_search(int v[], int n, int x){
int high=n;
int low=0;
int mid;
while(low<=high){
mid=(low+high)/2;
if(v[mid]>x){
high=mid-1;
}
else if(v[mid]<x){
low=mid+1;
}
else {
return 1;
break;
}
}
if(v[mid]!=x){
return 0;}
}