输入说明 :
第一行:顺序表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 BubbleSort( vector<ElemType> &a ) {
ElemType tmp;
bool exchange=0;
for(int i=a.size()-1; i>=0; --i){//后面为有序区
exchange=0;
for(int j=0; j<i; ++j) {//无序区里面进行交换
if(a[j+1]<a[j]) {
tmp=a[j];
a[j]=a[j+1];
a[j+1]=tmp;
exchange=1;
}
}if(exchange==0)
break;
print(a);
}
}
//0:int,1:double,2:char,3:string
int main() {
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)
BubbleSort(vi);
else if(tmy==1)
BubbleSort(vd);
else
BubbleSort(v);
return 0;
}
}