选择排序
从第一个开始,找到最小(大)的交换
排序过程
5 8 9 6 7
1:5 -8 9 6 7
2:5 6-9 8 7
3:5 6 7-9 8
4:5 6 7 8-9
9 2 10 8 5 6 4
1:2-9 10 8 5 6 4
2:2 4-10 8 5 6 9
3:2 4 5-8 10 6 9
4:2 4 5 6-10 8 9
5:2 4 5 6 8-10 9
6:2 4 5 6 8 9-10
代码实现
#include<iostream>
using namespace std;
int main()
{
int a[10],j,t,min;
cout<<"请输入十个数:"<<endl;
for(int i = 0; i < 10; i++)
{
cin>>a[i];
}
for(i=0;i<10-1;i++)
{
min=i;
for(j=i+1;j<10;j++)
{
if(a[min]>a[j])
min=j;//记住此时j的下标
}
t=a[i];a[i]=a[min];a[min]=t;//将a[i]和a[j]交换位置
}
for(i = 0; i < 10; i++)
{
cout<<a[i]<<" ";
}
return 0;
}
冒泡排序
两两比较,判断是否交换
重复几轮
也就是假设n个数,那么就要进行n-1 步,第i 步中则需要n-i 次比较。
排序过程
9 6 8 4 2
1:6 8 4 2 9
2:6 4 2 8 9
3:4 2 6 8 9
4:2 4 6 8 9
9 2 10 8 5 6 4
1:2 10 8 5 6 4 9
2:2 8 5 6 4 9 10
3:2 5 6 4 8 9 10
4:2 5 4 6 8 9 10
5:2 4 5 6 8 9 10
代码实现
#include<iostream>
using namespace std;
int main()
{
int a[10],j,t;
cout<<"请输入十个数:"<<endl;
for(int i = 0; i < 10; i++)
{
cin>>a[i];
}
for(i=0;i<9;i++)
{
for(j=0;j<9-i;j++)
{
if(a[j]>a[j+1])
{
t=a[j];a[j]=a[j+1];a[j+1]=t;
}
}
}
for(i=0;i<10;i++)
cout<<a[i]<<" ";
}