【题目要求】
给定一串数字,要求将数字有小到大按顺序输出。
【题目解析】
开始时按顺序选择一个位置,从其后方找到比它小的最小值进行交换。例如下图:
1 建立动态数组
2 建立双重循环,分别为: 按顺序选择初始位置,找到后方比它小的最小值
3 使用swap交换,头文件algorithm。
#include<iostream>
#include<algorithm>
using namespace std;
int main()
{
int n,k; //k为定位下标
cin>>n;
int *a=new int[n];
for(int i=0;i<n;i++)
{
cin>>a[i];
}
for(int j=0;j<n-1;j++)
{
k=j; //定位初始位置为开始
for(int t=j+1;t<n-1;t++) //从其后方寻找,定位j+1
{
if(a[k]>a[t])
{
k=t; //找到后方最小,小标赋给定位
}
}
if(k!= j) //若不是自身,则交换
{
swap(a[j],a[k]);
}
}
for(int m=0;m<n;m++)
{
cout<<a[m]<<' ';
}
return 0;
}
【总结】
选择排序是一种思想,效率较高
各种排序、查找方法汇总请见: