将字符串中的字符按照ASCII码值从小到大进行排序,并输出。
//解法一:STL法
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
int main()
{
vector<char> vc;
string str;
int i=0;
cout << "input a string:";
cin >> str;
while (str[i] != '\0')
{
vc.push_back(str[i]);
i++;
}
sort(vc.begin(), vc.end());
for (vector<char>::iterator it=vc.begin(); it!=vc.end(); it++)
{
cout << *it;
}
cout << endl;
return 0;
}
//解法二:冒泡排序法
#include <iostream>
using namespace std;
int main()
{
char ch[100], a, temp;
int i=0, j, size;
int exchange;
cout << "input a string (enter to end):";
while (1) //输入一行字符串,'\n'退出
{
scanf("%c", &a);
if (a=='\n')
{
break;
}
ch[i]=a;
i++;
}
ch[i]='\0';
size = strlen(ch);
for (i=0; i<size-1; i++) //冒泡排序
{
exchange = 0;
for(j=size-1; j>i; j--)
{
if (ch[j] < ch[j-1])
{
temp = ch[j];
ch[j] = ch[j-1];
ch[j-1] = temp;
exchange = 1;
}
}
if (exchange == 0)
{
break;
}
}
cout << "After sort:" << ch << endl;
return 0;
}