博观而约取 厚积而薄发
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;
}