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