【C语言及程序设计】二分法操作数组
问题描述:
定义好一个有10个元素的数组,先输入9个呈升序的数作为前9个元素,再输入一个数,要求按原来排序的规律将它插入数组中。
例如,9个呈升序的数为1 7 8 17 23 24 59 62 101,需要插入的数字为50,输出的序列则为1 7 8 17 23 24 50 59 62 101。
#include "stdafx.h"
#pragma warning (disable : 4996)
#define size 10
int main()
{
printf("输入9个元素:");
int n[size];
for (int i = 0; i < size -1; i++)
{
scanf("%d", &n[i]);
}
printf("\n输入插入数:");
int x;
scanf("%d", &x);
int max(size - 1), min(0),med, seri;
while (max - min !=1)
{
med = (max + min) / 2;
if (n[med]>x)
{
max = med;
}
else if (n[med]<x)
{
min = med;
}
else
{
break;
max = med;
}
}
seri = max;
printf("\n");
for (int i = size - 1; i >seri; i--)
{
n[i] = n[i - 1];
}
n[seri] = x;
for (int i = 0; i <size; i++)
{
printf("%d ", n[i]);
}
return 0 ;
}

浙公网安备 33010602011771号