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

  

posted @ 2018-07-17 10:28  Miyazakehime  阅读(562)  评论(0编辑  收藏  举报