1.问题描述
从键盘上输入10个整数,用选择法将其由小到大的顺序排列并输出。
2.解题思路
1)先将10个数中的最小的数余 a[0]对换;
2)再将 a[1] 到 a[9]中最小的数与 a[1] 对换;
3)每比较一轮,找出一个未排序的数中最小的一个,共比较9轮。
3.图解
8 | 9 | 5 | 6 | 7 | 3 | 4 | 0 | 2 | 1 |
0 | 9 | 5 | 6 | 7 | 3 | 4 | 8 | 2 | 1 |
0 | 1 | 5 | 6 | 7 | 3 | 4 | 8 | 2 | 9 |
0 | 1 | 2 | 6 | 7 | 3 | 4 | 8 | 5 | 9 |
0 | 1 | 2 | 3 | 7 | 6 | 4 | 8 | 5 | 9 |
0 | 1 | 2 | 3 | 4 | 6 | 7 | 8 | 5 | 9 |
0 | 1 | 2 | 3 | 4 | 5 | 7 | 8 | 6 | 9 |
0 | 1 | 2 | 3 | 4 | 5 | 6 | 8 | 7 | 9 |
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
4.代码实现
#include<iostream>
using namespace std;
void sort(int b[],int n)
{
int i,j,t;
for(i = 0; i < n-1;i++)
{
for(j = i+1;j < n;j++)
if(b[j] < b[i])
{
t = b[j];
b[j] = b[i];
b[i] = t;
}
}
}
int main()
{
int a[10],i;
for(i = 0;i < 10;i++)
cin>>a[i];
sort(a,10);
for(i = 0;i <10;i++)
cout<<a[i]<<"\t";
return 0;
}
5.测试示例
6.时间复杂度
T(n) = O(n)