3.2-A-L1-2-第15讲-冒泡排序mochen@denglexi
- 开源代码
- 2025-09-17 16:30:02

博观而约取 厚积而薄发
Observe extensively but select wisely; accumulate deeply but release sparingly.
每次比较两个相邻的元素,如果它们的顺序错误就把它 们交换过来。 每一轮进行两两比较,将该轮中最大/最小的值冒出来。
冒泡程序核心代码:
int a[5]={5,4,3,2,1}; for(int i=0;i<4;i++){ //TODO for(int j=0;j<4;j++){ if(a[j]>a[j+1]) swap(a[j],a[j+1]); } } for(int i=0;i<5;i++){ //TODO cout<<a[i]; }练习:
2638 对n个数降序排序 描述 从键盘输入n个数字,将这些数字从大到小降序排序输出。 输入描述 第一行,一个整数n(1≤n≤100); 第二行,n个整数,使用空格隔开,每个整数的范围1~1000,存入数组a中。 输出描述 一行n个整数,使用空格隔开,从大到小(降序)排列 样例输入 1 5 10 137 568 326 754 样例输出 1 754 568 326 137 10 #include <bits/stdc++.h> using namespace std; int main(){ int a[105]={0},n; cin>>n; for(int i=0;i<n-1;i++){ for(int j=0;j<n-i-1;j++){ if(a[j]>a[j+1]){ swap(a[j]>a[j+1]); } } } for(int i=0;i<n;i++){ cout<<a[i]<<" "; } return 0; } 2639 车厢重组 描述 在一个旧式的火车站旁边有一座桥,其桥面可以绕河中心的桥墩水平旋转。一个车站的职工发现桥的长度最多能容纳两节车厢,如果将桥旋转180度,则可以把相邻两节车厢的位置交换,用这种方法可以重新排列车厢的顺序。 现在需要用这座桥将进站的车厢按车厢号从小到大排列。请编写一个程序,输入初始的车厢顺序,计算用多少步就能将车厢排序。 输入描述 第1行是车厢总数N(1≤N≤1000)。 第2行为N个不同的数,表示初始的车厢号,使用空格隔开。 输出描述 一个整数,最少的旋转次数。 样例输入 1 4 4 3 2 1 样例输出 1 6 #include <bits/stdc++.h> using namespace std; int main(){ int a[15]={0},b[15]={0},c[15]={0},m; for(int i=0;i<10;i++){ cin>>a[i]; } for(int i=0;i<10;i++){ if(a[i]%2==0){ c[i]=a[i]; m++; } else{ b[i]=a[i]; } } for(int i=0;i<m-1;i++){ for(int j=0;j<10-i-1;j++){ if(b[j]<b[j+1]){ swap(b[j],b[j+1]); } } } for(int i=0;i<10-m;i++){ cout<<b[i]; } for(int i=0;i<m;i++){ cout<<c[i]; } } 1961 整数奇偶排序 描述 给定10个整数的序列,要求对其重新排序。排序要求: 1.奇数在前,偶数在后; 2.奇数按从大到小排序; 3.偶数按从小到大排序。 输入描述 输入一行,包含10个整数,彼此以一个空格分开,每个整数的范围是大于等于0,小于等于30000。 输出描述 按照要求排序后输出一行,包含排序后的10个整数,数与数之间以一个空格分开。 样例输入 1 4 7 3 13 11 12 0 47 34 98 样例输出 1 47 13 11 7 3 0 4 12 34 98 #include <bits/stdc++.h> using namespace std; int main(){ int a[15]={0},b[15]={0},c[15]={0},m; for(int i=0;i<=0;i++){ cin>>a[i]; } for(int i=0;i<10;i++){ if(a[i]%2==0){ c[i]=a[i]; m++; } else{ b[i]=a[i]; } } for(int i=0;i<10-m-1;i++){ for(int j=0;j<10-m-i-1;j++){ if(b[j]<b[j+1])swap(b[j],b[j+1]); } } for(int i=0;i<m-1;i++){ for(int j=0;j<m-i-1;j++){ if(c[j]<c[j+1])swap(c[j],c[j+1]); } } for(int i=0;i<10-m;i++){ cout<<b[i]; } for(int i=0;i<m;i++){ cout<<c[i]; } return 0; }3.2-A-L1-2-第15讲-冒泡排序mochen@denglexi由讯客互联开源代码栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“3.2-A-L1-2-第15讲-冒泡排序mochen@denglexi”