题目: 从文件读入一个字符串,对其进行奇偶排序,使字母都按顺序排列。奇偶排序:每个奇数的字符开始,依次比较,若a[i-1]>a[i]或者a[i]>a[i+1]则交换;再从偶数的字符开始,如此循环往复,直至交换完毕。
//从文件读入一个字符串,对其进行奇偶排序,使字母都按顺序排列。 //奇偶排序:每个奇数的字符开始,依次比较,若a[i-1]>a[i]或者a[i]>a[i+1]则交换;//再从偶数的字符开始,如此循环往复,直至交换完毕。 #include <iostream>#include <string>#include <fstream>using namespace std;void Swap(char &s1, char &s2) {char temp = s1;s1 = s2;s2 = temp;}int main(){ifstream is("string.txt");if(!is) {cerr << "File can not be opened!" << endl;exit(EXIT_FAILURE);}string str;bool flag1, flag2;is >> str;//从外部读入文件cout << "Before sorting:\n" << str << endl; while(flag1==false || flag2==false) { //只有当两轮遍历结束后flag1与flag2都为true才跳出循环flag1 = true;flag2 = true;for(int i = 1; i < str.length() - 1; i += 2) { //从奇数字符开始if(str[i] > str[i+1]) {Swap(str[i], str[i+1]);flag1 = false;}}for (int j = 0; j < str.length() - 1; j += 2) { //从偶数字符开始if (str[j] > str[j + 1]){Swap(str[j],str[j + 1]);flag2 = false;}}}cout << "\nAfter sorting:\n" << str << endl;return 0;}