Description
键盘输入若干个正整数,输入-1时结束,用选择排序法完成升序排序,并输出排序结果
Input
输入若干个正整数,输入-1时结束
Output
输出排序结果
Sample Input
6
9
5
1
2
-1
Sample Output
1 2 5 6 9
#include<iostream>
using namespace std;
int main() {
int a;
int b = 0;
int c[1000];
while (cin >> a) {
if (a == -1)break;
c[b] = a;
b++;
}
int t;
for (int i = 0; i < b; i++) {
t=i;
for (int j = i+1; j < b; j++) {
if (c[j] < c[t])
t = j;
}
int fff = c[i];
c[i] = c[t];
c[t] = fff;
//在此时,c[i]和c[t]有可能是同一个数组元素
}
for (int i = 0; i < b-1; i++) {
cout << c[i] << " ";
}
cout << c[b - 1] << endl;
}
遇到的问题:
在进行c[i]和c[t]值的交换时,我一开始用了如下的方式:
c[i] = c[i] ^ c[t];
c[t] = c[i] ^ c[t];
c[i] = c[i] ^ c[t];
没有考虑到c[i]和c[t]有可能是数组中同一个元素。
在进行类似这样的值的交换时一定要注意是否二者是不是一个东西。
//(我代码写的太垃圾了,蠢的一批,估计一般人都遇不到这种问题)