网站建设捌金手指下拉二七冷水滩网站建设
news/
2025/9/22 22:02:21/
文章来源:
网站建设捌金手指下拉二七,冷水滩网站建设,域名注册网站排名,手机网站的特效文章主题#xff1a;有序序列合并#x1f525;#x1f525;#x1f525;所属专栏#xff1a;C语言每日一题#x1f4d7;作者简介#xff1a;每天不定时更新C语言的小白一枚#xff0c;记录分享自己每天的所思所想#x1f604;#x1f3b6;个人主页#xff1a;[₽]的… 文章主题有序序列合并所属专栏C语言每日一题作者简介每天不定时更新C语言的小白一枚记录分享自己每天的所思所想个人主页[₽]的个人主页 目录 前言编程起因项目介绍项目名项目描述输入描述 设计思路1.整体逻辑2. 具体逻辑方法一方法二 代码展示方法一 集中于一数列的冒泡排序法速度慢两行数排列顺序可随机方法二 两行数边遍历边比较取小元素输出法速度快两行必须小到大 效果展现结语 前言
编程起因
最近在牛客网中学到了一个比较有意思的题目觉得对于锻炼编程思维比较有意义便在VS上用优化的方法写了一遍后写下了这篇博客分享给大家。
项目介绍
项目名
有序序列合并
项目描述
输入两个升序排列的序列将两个序列合并为一个有序序列并输出。 数据范围1 ≤ n, m ≤ 1000序列中的值满足 0 ≤ val ≤ 30000。
输入描述
输入包含三行
第一行包含两个正整数n, m用空格分隔。n表示第二行第一个升序序列中数字的个数m表示第三行第二个升序序列中数字的个数。
第二行包含n个整数用空格分隔。
第三行包含m个整数用空格分隔。 设计思路
1.整体逻辑
方法一将两行数字合并成一行数字后输入到一个数列中再用冒泡排序法将其输出。方法二将两行数字分别输入进两个数列中两个数列边遍历边比较取最小元素输出某一个数列首先输出完之后退出循环。用分支语句判断输出完的数列是哪个后将另一个数组剩下的元素输出。
2. 具体逻辑
方法一
利用输入进去的行元素个数n和m遍历将两行数字合并成一行数字后输入到一个数列中再用冒泡排序法将其输出。
方法二
利用输入进去的行元素个数n和m遍历将两行数字分别输入进两个数列中再用元素i和j储存两数列的下标再分别各取第一个元素比较最小的元素输出后通过自增储存数列下标的变量i或j的值将该元素属于的数列往后取第二个元素和另一个数组的第一个元素继续比较最小的元素输出后如此循环往复的遍历之后直到某一个数列首先输出完之后退出循环。再用分支语句判断输出完的数列是第一个还是第二个之后将另一个数组剩下的元素输出出来然后这样就将两数列中的数据以从小到大的顺序全部输出出来。 代码展示
方法一 集中于一数列的冒泡排序法速度慢两行数排列顺序可随机
#include stdio.h
int main()
{int n 0, m 0, arr[2000] { 0 };printf(Please enter the number of rows for two sequences:\n);scanf(%d%d, n, m);printf(Please enter the elements of two sequences separately:\n);for (int i 0; i n m; i)//两行作一行储存在一数列中{scanf(%d, arr[i]);}int tmp 0;for (int i n m - 1; i 0; i--)//将该行数列中的数有小到大冒泡排序{for (int j 0; j i; j){if (arr[j] arr[j 1]){tmp arr[j];arr[j] arr[j 1];arr[j 1] tmp;}}}printf(The merged sequence in ascending order is:\n);//输出有小到大排序后的数列for (int i 0; i n m; i){printf(%d , arr[i]);}return 0;
}方法二 两行数边遍历边比较取小元素输出法速度快两行必须小到大
#include stdio.h
int main()
{int n 0, m 0, arr1[1000] { 0 }, arr2[1000] { 0 };printf(Please enter the number of rows for two sequences:\n);scanf(%d%d, n, m);printf(Please enter the elements of two sequences separately:\n);int i 0, j 0;for (; i n; i)//将第一行数据输入到数列1中{scanf(%d, arr1 i);}for (; j m; j)//将第二行数据输入到数列2中{scanf(%d, arr2 j);}i 0;j 0;int k 0;printf(The merged sequence in ascending order is:\n);while (i n j m)//运用具体逻辑中的方法将一个数列中的数据输出{if (arr1[i] arr2[j]){printf(%d , arr1[i]);}else{printf(%d , arr2[j]);}}if (i n)//运用分支语句判断输出的数列是哪一个后再将另一数列剩下的元素全部输出{for (; j m; j){printf(%d , arr2[j]);}}else{for (; i n; i){printf(%d , arr1[i]);}}return 0;
}效果展现 结语
以上就是我对有序序列合并这个项目的解题思路代码以及效果展示希望对你的C语言学习有所帮助作为刚学编程的小白可能在一些设计逻辑方面有些不足欢迎评论区进行指正看都看到这了点个小小的赞或者关注一下吧当然三连也可以~你的支持就是博主更新最大的动力让我们一起成长共同进步
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/910521.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!