题目:N个数的数组,Ai表示第i个数字。现在输入N,l1,r1,l2,r2表示将此数字第l1至r1位从小到大排序,然后第l2至r2位从大到小排序。最后输出该数组。
#include <stdio.h> int main() { int n; int l1,r1,l2,r2; scanf("%d%d%d%d%d",&n,&l1,&r1,&l2,&r2); int a[n]; for(int i=0;i<n;i++)scanf("%d",&a[i]); for(int i=l1-1;i<r1-1;i++) //首次冒泡排序:从小到大 { for(int j=l1-1;j<r1-i+l1-2;j++) { int temp; if(a[j]>a[j+1]){temp=a[j+1]; a[j+1]=a[j]; a[j]=temp;} } } for(int i=l2-1;i<r2-1;i++) //第二次冒泡排序:从大到小 { for(int j=l2-1;j<r2-i+l2-2;j++) { int temp; if(a[j]<a[j+1]){temp=a[j+1]; a[j+1]=a[j]; a[j]=temp;} } } printf("%d",a[0]); for(int i=1;i<n;i++) { printf(" %d",a[i]); } return 0; }
思路:很简单,如注释所述。
过程反思:
读题不认真(导致首次出错)
冒泡排序不熟练!!!(第一次还是犯了逻辑错误)再次深化学习数组排序的几种方式 见下篇博客。
蓝桥杯训练营 数组排序 简单问题
最新推荐文章于 2022-05-01 20:00:16 发布