已知有一个已经从小到大排好顺序的整数数列,若从键盘任意输入一个整数,编写程序将其插入到数列的适当位置,仍保持数列的递增顺序.(提示信息:如有数列2,6,9,12,23,若从键盘输入10,则输出
来源:学生作业帮助网 编辑:六六作业网 时间:2025/01/04 01:09:57
已知有一个已经从小到大排好顺序的整数数列,若从键盘任意输入一个整数,编写程序将其插入到数列的适当位置,仍保持数列的递增顺序.(提示信息:如有数列2,6,9,12,23,若从键盘输入10,则输出已知有一
已知有一个已经从小到大排好顺序的整数数列,若从键盘任意输入一个整数,编写程序将其插入到数列的适当位置,仍保持数列的递增顺序.(提示信息:如有数列2,6,9,12,23,若从键盘输入10,则输出
已知有一个已经从小到大排好顺序的整数数列,若从键盘任意输入一个整数,编写程序将其插入到数列的适当位置,仍保持数列的递增顺序.(提示信息:如有数列2,6,9,12,23,若从键盘输入10,则输出数列为:2,6,9,10,12,23).(c语言)
已知有一个已经从小到大排好顺序的整数数列,若从键盘任意输入一个整数,编写程序将其插入到数列的适当位置,仍保持数列的递增顺序.(提示信息:如有数列2,6,9,12,23,若从键盘输入10,则输出
这个很简单:
#include <stdio.h>// 输入
void input(int a[], int len)
{
int i = 0;
while (i < len)
{
scanf("%d", &a[i++]);
}
}
// 输出
void output(int a[], int len)
{
printf("[ ");
int i = 0;
while (i < len) printf("%3d ", a[i++]);
printf("]\n");
}
// 排序
void reorder(int a[], int len)
{
int i, j, index, max;
for (i = len - 1; i >= 0; i--)
{
index = 0;
max = 0;
for (j = 0; j <= i; j++)
{
if (a[j] > max)
{
max = a[j];
index = j;
}
}
a[index] = a[i];
a[i] = max;
}
}
// 排序
void inset(int a[], int &len,int x)
{
int i, j;
a[len]=100000;
for(i=0;i<=len;++i)
{
if(a[i]>x)
break;
}
for (j=len+1;j>i;j--)
{
a[j] = a[j-1];
}
a[i] = x;
len++;
}
int main()
{
int a[30] = {0};
int count = 10;
int x = -1;
printf("Please input %d integers:", count);
input(a, count);
printf("The numbers you input are:\n");
reorder(a, count);
output(a, count);
printf("Input the number what you want to insert it:\n", x);
scanf("%d",&x);
inset(a,count,x);
printf("The numbers after you insert are:\n");
output(a, count);
printf("\nThanks for your using!\n");
return 0;
}
其实可以补充一下:
// 输入
void input(int a[], int len)
{
int i = 0;
while (i < len)
{
scanf("%d", &a[i++]);
}
}
// 输出
void output(int a[], int len)
{
printf("[ ");
int i = 0;
while (i < len) printf("%3d ", a[i++]);
printf("]\n");
}
// 排序
void reorder(int a[], int len)
{
int i, j, index, max;
for (i = len - 1; i >= 0; i--)
{
index = 0;
max = 0;
for (j = 0; j <= i; j++)
{
if (a[j] > max)
{
max = a[j];
index = j;
}
}
a[index] = a[i];
a[i] = max;
}
}
// 折半查找
int search(int a[], int begin, int end, int target)
{
int left = begin;
int right = end;
int mid = (left + right) / 2;
if (left >= right)
return -1;
if (a[mid] == target)
return mid;
else if (a[mid] < target)
return search(a, mid, right, target);
else
return search(a, left, mid, target);
}
// 插入
void insert(int a[], int len, int target)
{
int i = 0;
int index = -1;
if (target <= a[0]) index = 0;
else if (target >= a[len - 1]) index = len;
else
{
for (i = 0; i < len; i++)
{
if (a[i] < target && a[i + 1] >= target)
{
index = i + 1;
break;
}
}
}
for (i = len; i > index; i--)
{
a[i] = a[i - 1];
}
a[index] = target;
}
// 删除
void del(int a[], int len, int target)
{
int index = search(a, 0, len, target);
if (index != -1)
{
int i = 0;
for (i = index; i < len; i++)
{
a[i] = a[i + 1];
}
}
}
int main()
{
int a[30] = {0};
int count = 20;
int index = -1;
int x = -1;
printf("Please input %d integers:", count);
input(a, count);
printf("The numbers you input are:\n");
output(a, count);
printf("Please input the x you want to insert: x = ");
scanf("%d", &x);
printf("Firstly, we reorder these numbers...\n");
reorder(a, 10);
printf("Now we get an array like this:\n");
output(a, 10);
printf("Search %d in the array...\n", x);
index = search(a, 0, count, x);
if (index == -1)
{
printf("We CAN NOT find %d in the array, so we insert it.\n", x);
insert(a, count, x);
count++;
}
else
{
printf("Wow, we found it, so we delete it...\n");
del(a, count, x);
count--;
}
printf("Now let us check up the content in the array:\n");
output(a, count);
printf("\nThanks for your using!\n");
return 0;
}
你可以选择上面那个,下面的就当我写给你观摩的,哈哈
已知有一个已经从小到大排好顺序的整数数列,若从键盘任意输入一个整数,编写程序将其插入到数列的适当位置,仍保持数列的递增顺序.(提示信息:如有数列2,6,9,12,23,若从键盘输入10,则输出
个已经排好顺序的数列a[30]插入一个整数 要求按原来的升序排列
C语言实验题 数列有序!描述有n(n<=100)个整数,已经按照从小到大顺序排列好,现在另外给一个整数m,请将该数插入到序列中,并使新的序列仍然有序. 输入输入数据包含多个测试实例,每组数据
杭电ACM 2019 数列有序问题 输出错误Problem Description有n(n<=100)个整数,已经按照从小到大顺序排列好,现在另外给一个整数x,请将该数插入到序列中,并使新的序列仍然有序. Input输入数据包含多
杭电ACM 2019 数列有序 输出错误Problem Description有n(n<=100)个整数,已经按照从小到大顺序排列好,现在另外给一个整数x,请将该数插入到序列中,并使新的序列仍然有序. Input输入数据包含多个测
有n个数,已有小到大的顺序排好,要求输入一个数,将它插入到数列的合适位置,使
nahtk这几个字母已经被打乱,请帮帮忙把它们顺序排好,变成一个完整的单词.
编写一个算法,从小到大依次输出顺序读入的三个整数x,y,z的值.
设计一个java程序,从键盘输入三个整数,按照从小到大的顺序输出
四大洋按从小到大的顺序排是
五个整数a,b,c,d,e,它们两两相加的和按从小到大顺序排分别是183,186,187,190,191,192,193,194,196,X.已知a
高中数学等差数列求和难题1.有两个等差数列2,6,10,···,190及2,8,14,···,200,由这两个等差数列的公共项按从小到大的顺序组成一个新数列,求这个新数列的各项之和.2.已知数列(an)是等差数列
等差数列{an}的首项和公差都是2/3,记{an}前n项和为sn.等比数列为q,记{bn}的前n项为Tn.若将Sn中的整数项按从小到大的顺序构成数列{Cn},求Cn的一个通项公式.希望有过程和思路.还有就是能不能再说
Description 对于一个给定的数列,输出在这个数列里面排第二大的那个数.Input第一行一个整数n,表示数列的长度 第二行有n个整数.Output输出一行,一个整数,表示在这个数列里面排第二大的那个数.S
实验小学举行运动会,全体运动员的编号是从1开始的连续整数,他们按照编号从小到大的顺序成一个方阵,从第一列第一排开始.小亮的编号是30,他排在第6列第3排,运动员共有多少人?
英语 表示“好”的词 按照 程度从小到大排有哪些呢?
有两个等差数列,2,6,10,…,和2,8,14,…,200,由这两个等差数列的公共项按从小到大的顺序组成一个新数列,求这个新数列的各项之和.还有一题是已知an等于1/(n*(n+1))求Sn的公式……第一题通向公式
C/C++ 在已排序好的数列中插入一个数,使数列保持从小到大的顺序.好像不太对诶.