已知有一个已经从小到大排好顺序的整数数列,若从键盘任意输入一个整数,编写程序将其插入到数列的适当位置,仍保持数列的递增顺
来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/26 12:28:13
已知有一个已经从小到大排好顺序的整数数列,若从键盘任意输入一个整数,编写程序将其插入到数列的适当位置,仍保持数列的递增顺序.(提示信息:如有数列2,6,9,12,23,若从键盘输入10,则输出数列为:2,6,9,10,12,23).(c语言)
这个很简单:#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;
}其实可以补充一下:
#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;
}
}
// 折半查找
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;
}你可以选择上面那个,下面的就当我写给你观摩的,哈哈
// 输入
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;
}其实可以补充一下:
#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;
}
}
// 折半查找
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;
}你可以选择上面那个,下面的就当我写给你观摩的,哈哈
、编写程序,任意输入10个整数的数列,先将整数按照从大到小的顺序进行排序,然后输入一个整数插入到数列中,使数列保持从大到
编写程序,用scanf函数输入10个整数的数列,先将整数按照从大到小的顺序进行排序,然后输入一个整数插入到
编程,任意输入10个整数的数列,输入一个整数插入到数数列中,使数列保持从大到小的顺序.
有n个数,已有小到大的顺序排好,要求输入一个数,将它插入到数列的合适位置,使
从键盘输入一个数,将其插入到有序的数列中去,插入后的数列仍然保持以前的顺序.
10个数,按从大到小排序,输入一个数,插入到原有数列中并保持从大到小的顺序不变,输出该数插入的位置
通过键盘输入一个含有10个整数的数列.编写程序,将10个整数按照从大到小的顺序重新排列,要求输出排序
C/C++ 在已排序好的数列中插入一个数,使数列保持从小到大的顺序.
数据结构 已知一个顺序表递增有序,试设计一种算法,将x插入到表中的适当位置,以保持顺序表的有
编写一个程序,功能是:从键盘上输入任意两位整数,将其十位数字与个位数字交换位置后输出
C语言:用指针编程:有一个数列,含有20个整数,编写函数,要求能够对从指定位置开始的n个数按相反顺序重
1、假设通过键盘输入一个含有10个整数的数列.编写程序,将10个整数按照从大到小的顺序重新排列,要求输出排序后的结果以及