一、算法原理:
第一步:给定一个数组a存储要排序的数,和一个数组b存储已排好的数。
第二步:将和
排序。如果要从小到大排序,则看哪个更小,小的先存进b里面;如果大到小排序,则看那个更大,大的先存进b。
第三步:循环第二步的操作。
第四步:这样就完成了,最后b里面的数字就是有序的数组,输出b即可。
二、参考代码
第一种写法:
#include<bits/stdc++.h>
using namespace std;
int a[110],n,i,j,x;//a数组就是要排序的数,n是数组的长度
int main(){
cin>>n;
for(i=1;i<=n;i++)cin>>a[i];
for(i=1;i<=n;i++)
for(j=1;j<=n-i;j++){
if(a[j]>a[j+1]){//排序
x=a[j];//先将大的数赋值给x
a[j]=a[j+1];//然后让这两个数相等
a[j+1]=x;//最后把x的值赋给a[j+1]
//先把a[j+1]的值给了a[j],然后又把最早以前的a[j]赋给了a[j+1],这样两个数就排序完了
}
}
for(i=1;i<=n;i++)cout<<a[i]<<" ";
return 0;
}
第二种写法:
#include<bits/stdc++.h>
using namespace std;
int a[110],n,i,j,x;//a数组就是要排序的数,n是数组的长度
int main(){
cin>>n;
for(i=1;i<=n;i++)cin>>a[i];
for(i=1;i<=n;i++)
for(j=1;j<=n-i;j++){
if(a[j]>a[j+1]){//排序
swap(a[j],a[j+1]);
}
}
for(i=1;i<=n;i++)cout<<a[i]<<" ";
return 0;
}