发布时间:2022-09-24 15:00
输入两个升序排列的序列,将两个序列合并为一个有序序列并输出。
输入包含三行,
第一行包含两个正整数n, m,用空格分隔。n表示第二行第一个升序序列中数字的个数,m表示第三行第二个升序序列中数字的个数。
第二行包含n个整数,用空格分隔。
第三行包含m个整数,用空格分隔。
输出为一行,输出长度为n+m的升序序列,即长度为n的升序序列和长度为m的升序序列中的元素重新进行升序序列排列合并。
输入:
5 6 1 3 7 9 22 2 8 10 17 33 44 输出: 1 2 3 7 8 9 10 17 22 33 44
思路:将两个数组中的数据存在另一个数组中,然后利用冒泡排序法进行排序。
#include
int main()
{
int m, n,i,j,temp;
scanf("%d %d", &m, &n);
int a[m], b[n];
int x[m+n];
for(i=0;ix[j+1])
{
temp=x[j];
x[j]=x[j+1];
x[j+1]=temp;
}
}
}
for(i=0;i
输入一个整数序列,判断是否是有序序列,有序,指序列中的整数从小到大排序或者从大到小排序(相同元素也视为有序)。
第一行输入一个整数N(3≤N≤50)。
第二行输入N个整数,用空格分隔N个整数。
输出为一行,如果序列有序输出sorted,否则输出unsorted。
输入:
5
1 6 9 22 30
输出:
sorted
输入:
5
3 4 7 2 10
输出:
unsorted
输入:
5
1 1 1 1 1
输出:
sorted
思路:将前一个数和后一个数做差,根据大于0或小于0的情况进行计数,如果计数的情况为n-1,那么就说明此序列两两相减的趋势相同,所以可对其进行是否有序的判断。
#include
int main()
{
int i,n,count1=0,count2=0;
scanf("%d",&n);
int x[n];
for(i=0;i=0)
count1++;
else if(x[i]-x[i+1]<0)
count2++;
}
if(count1==n-1||count2==n-1)
printf("sorted");
else
printf("unsorted");
return 0;
}
有一个有序数字序列,从小到大排序,将一个新输入的数插入到序列中,保证插入新数后,序列仍然是升序。
第一行输入一个整数N(0≤N≤50)。
第二行输入N个升序排列的整数,输入用空格分隔的N个整数。
第三行输入想要进行插入的一个整数。
输出为一行,N+1个有序排列的整数。
输入:
5
1 6 9 22 30
8
输出:
1 6 8 9 22 30
#include
int main()
{
int i,n,m; //n数组元素数目 m插入的数字
scanf("%d",&n);
int x[n+1];
for(i=0;ix[n-1]) printf("%d ",m); //m比数组中的任一个数都打,则执行这个if语句
return 0;
}
有一个整数序列(可能有重复的整数),现删除指定的某一个整数,输出删除指定数字之后的序列,序列中未被删除数字的前后位置没有发生改变。
第一行输入一个整数(0≤N≤50)。
第二行输入N个整数,输入用空格分隔的N个整数。
第三行输入想要进行删除的一个整数。
输出为一行,删除指定数字之后的序列。
输入:
6
1 2 3 4 5 94
输出:
1 2 3 5 9
输入:
5
1 2 3 4 6 5
输出:
1 2 3 4 6
#include
int main()
{
int i,n;
scanf("%d",&n);
int x[n];
for(i=0;i