
问题
编写一个程序来接受一个由N个元素组成的一维数组,并将其分成两半。稍后,将前半部分按升序排序,后半部分按降序排序。
解决方案
在单个数组中对两个半部分执行两次操作的解决方案C语言解释如下 –
前半部分升序排序的逻辑如下 –
for (i=0; i<b; ++i){ for (j=i+1; j number[j]){ a = number[i]; number[i] = number[j]; number[j] = a; } }}
用于对后半部分进行降序排序的逻辑如下 –
for (i=b; i<n; ++i){ for (j=i+1; j<n; ++j){ if (number[i] < number[j]){ a = number[i]; number[i] = number[j]; number[j] = a; } }}
用于将数组分成两半并相应打印的逻辑如下 –
升序前半部分
for (i=0; i<b; ++i)printf ("%d ",number[i]);
降序后半部分
for(i=b;i<n;i++)printf("%d ",number[i]);
示例
以下是对单个数组中的两半执行两个操作的 C 程序 –
现场演示
#includevoid main(){ int i,j,a,n,b,number[30]; printf ("Enter the value of N"); scanf ("%d", &n); b = n/2; printf ("Enter the numbers
"); for (i=0; i<n; ++i) scanf ("%d",&number[i]); for (i=0; i<b; ++i){ for (j=i+1; j number[j]){ a = number[i]; number[i] = number[j]; number[j] = a; } } } for (i=b; i<n; ++i){ for (j=i+1; j<n; ++j){ if (number[i] < number[j]){ a = number[i]; number[i] = number[j]; number[j] = a; } } } printf (" The 1st half numbers
"); printf (" arranged in asc
"); for (i=0; i<b; ++i) printf ("%d ",number[i]); printf("
The 2nd half Numbers
"); printf("order arranged in desc.order
"); for(i=b;i<n;i++) printf("%d ",number[i]);}
输出
当执行上述程序时,会产生以下结果 –
Enter the value of N10Enter the numbers20342311455678987654The 1st half numbersarranged in asc11 20 23 34 45The 2nd half Numbersorder arranged in desc.order98 78 76 56 54
以上就是C程序在一个单一数组上执行两个半部分的操作的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1443786.html
微信扫一扫
支付宝扫一扫