有一个已经排好序的数组,现输入一个数,要求按原来的规律将它插入数组中。——C与C++实现
题目:一个已经排好序的数组,现输入一个数,要求按原来的规律将它插入数组中。(本例中输入的是一个升序的数组)
程序分析:
(1)判断输入的数是否大于数组中最后一个元素,如果成立,将输入的数插入数组的末尾,反之执行(2)。
(2)通过循环,将输入的数插入第一个比之大的元素前边,之后的元素一次向后移动。
C实现:
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main() {
int a[5] = { 1,4,8,13 };
int end, temp1, temp2;
printf("已经拍好序的数组为:");
for (int i = 0; i < 4; i++) {
printf("%d ", a[i]);
}
printf("\n");
int number;
printf("请输入一个数:");
scanf("%d", &number);
end = a[3];
if (number > end) {
a[4] = number;
}
else {
for (int i = 0; i < 4; i++) {
if (a[i] > number) {
temp1 = a[i];
a[i] = number;
for (int j = i + 1; j < 5; j++) {
temp2 = a[j];
a[j] = temp1;
temp1 = temp2;
}
break;
}
}
}
printf("插入%d之后的数组为:", number);
for (int i = 0; i <5; i++) {
printf("%d ", a[i]);
}
printf("\n");
return 0;
}
C运行结果:
C++实现:
#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
using namespace std;
int main() {
int a[5] = { 1,4,8,13 };
int end, temp1, temp2;
cout << "已经拍好序的数组为:";
for (int i = 0; i < 4; i++) {
cout << a[i] << " ";
}
cout << endl;
int number;
cout << "请输入一个数:";
cin >> number;
end = a[3];
if (number > end) {
a[4] = number;
}
else {
for (int i = 0; i < 4; i++) {
if (a[i] > number) {
temp1 = a[i];
a[i] = number;
for (int j = i + 1; j < 5; j++) {
temp2 = a[j];
a[j] = temp1;
temp1 = temp2;
}
break;
}
}
}
cout << "插入" << number << "之后的数组为:";
for (int i = 0; i <5; i++) {
cout << a[i] << " ";
}
cout << endl;
return 0;
}
C++运行结果: