一.过程演示
二.总结
1.循环两个变量:外层(轮数)、内层每轮的次数;
2.总轮数=元素长度-1=最大下标
3.每轮次数=元素长度-1-轮数=最大下标-轮数;
4.轮数(++),次数(++);
5.两两交换,大的放后面
三.程序样例
#include<iostream>
using namespace std;
int main(){
int s=0;
int a[6]={33,22,11,55,66,44};//需要排序的数组,可以用户输入;
/**********用户输入*******************
int n;
cin>>n;
int a[n];
for(int i=0;i<n;i++){
cin>>a[i];
}
************************************/
for(int i=0;i<6;i++){//外层循环,轮数小于元素长度的最大值;
//未知元素长度i<n
for(int j=0;j<6-1-i;j++){//内层循环,每轮交换的次数,每轮交换的次数小于(元素长度-1-轮数)
//未知元素长度j<n-1-i
if(a[j]>a[j+1]){//比较大小;大数放后面;空杯交换; (由小到大)
//由大到小 if(a[j]<a[j+1])
s=a[j];
a[j]=a[j+1];
a[j+1]=s;
}
}
}
for(int i=0;i<6;i++){//排序好后,输出数组;
cout<<a[i]<<" ";
}
/**********输出最大值或者最小值
由大到小:最大值a[0];最小值a[n-1];
由小到大:最小值a[0];最大值a[n-1];
********************************/
return 0;
}
四.程序样例
1.编程输入10个正整数,然后自动按从大到小的顺序输出
描述
编程输入10个正整数,然后自动按从大到小的顺序输出。
输入描述
输入只有一行,包括10整数.
输出描述
输出只有一行,包括10个整数。
用例输入 1
1 2 3 4 5 7 6 8 9 10
用例输出 1
10 9 8 7 6 5 4 3 2 1
#include<iostream>
using namespace std;
int main(){
int s=0;
int a[10];
for(int i=0;i<10;i++){
cin>>a[i];
}
for(int i=0;i<10;i++){
for(int j=0;j<10-1-i;j++){
if(a[j]<a[j+1]){
s=a[j];
a[j]=a[j+1];
a[j+1]=s;
}
}
}
for(int i=0;i<10;i++){
cout<<a[i]<<" ";
}
return 0;
}
2.数组元素的排序
描述
对数组的元素按从小到大进行排序
输入描述
有两行 第一行有一个整数n( 5 <= n <= 10 ) 第二行有n个整数
输出描述
输出更新后的数组
用例输入 1
8
1 2 3 6 8 7 4 5
用例输出 1
1 2 3 4 5 6 7 8
#include<iostream>
using namespace std;
int main(){
int n,s=0;
cin>>n;
int a[n];
for(int i=0;i<n;i++){
cin>>a[i];
}
for(int i=0;i<n;i++){
for(int j=0;j<n-1-i;j++){
if(a[j]>a[j+1]){
s=a[j];
a[j]=a[j+1];
a[j+1]=s;
}
}
}
for(int i=0;i<n;i++){
cout<<a[i]<<" ";
}
return 0;
}
3.求n个数的最大值和最小值
描述
任意输入n个整数,把它们的最大值,最小值求出来.
输入描述
输入只有一行,包括一个整数n(1<=n<=20),后面跟着n个数.每个数的范围在0到32767之间。
输出描述
输出只有一行,包括2个整数。
用例输入 1
5 1 99 3 6 0
用例输出 1
99 0
#include<iostream>
using namespace std;
int main(){
int n,s=0;
cin>>n;
int a[n];
for(int i=0;i<n;i++){
cin>>a[i];
}
for(int i=0;i<n;i++){
for(int j=0;j<n-1-i;j++){
if(a[j]>a[j+1]){
s=a[j];
a[j]=a[j+1];
a[j+1]=s;
}
}
}
cout<<a[n-1]<<" "<<a[0];
return 0;
}