输入说明 :
第一行:顺序表A的数据元素的数据类型标记(0:int,1:double,2:char,3:string)
第二行:待排序顺序表A的数据元素(数据元素之间以空格分隔)
输出说明 :
如第一行输入值为0、1、2、3之外的值,直接输出“err”
否则:
第一行:第一趟的排序结果
第三行:第二趟的排序结果
...
第n行:最终的排序结果
#include <iostream>
#include <bits/stdc++.h>
using namespace std;
template<class ElemType>
void print(vector<ElemType> a) {
for( int m=0; m<a.size(); ++m) { //
cout<<a[m];
if(m!=a.size()-1)
cout<<' ';
else
cout<<endl;
}
}
template<class ElemType>
void SimpleSelectSort( vector<ElemType> &a )
{
ElemType temp;
for (int i = 0; i < a.size() - 1 ; i++) //比较 n-1 趟
{
int index = i;
for (int j = i + 1; j < a.size(); j++)
{
//寻找最小关键字的索引
if (a[index] > a[j])
{
index = j;
}
}
//关键字最小的记录不在第i个位置上,将关键字最小的记录与第i个位置交换
if (index != i)
{
temp = a[index];
a[index] = a[i];
a[i] = temp;
}
print(a);
}
}
int main() {//0:int,1:double,2:char,3:string
int tmy;
string line,elem;
stringstream ss;
cin>>tmy;
getchar();
if(tmy!=0&&tmy!=1&&tmy!=2&&tmy!=3)
cout<<"err"<<endl;
else {
getline(cin,line);
ss<<line;
vector<string>v;
vector<int>vi;
vector<double>vd;
while(ss>>elem) {
if(tmy==0) {
int i=atoi(elem.c_str());
vi.push_back(i);
}
else if(tmy==1) {
double d=atof(elem.c_str());
vd.push_back(d);
} else
v.push_back(elem);
}
if(tmy==0)
SimpleSelectSort(vi);
else if(tmy==1)
SimpleSelectSort(vd);
else
SimpleSelectSort(v);
return 0;
}
}