#include <iostream>
using namespace std;
//选择排序
//从第n个数中选出最大的与第n个数交换位置,再从剩下的n-1个数里选择最大的与第n-1个数交换位置,直到只剩下最后一个数。
void sorts(int a[],int n)
{
for(int i=n-1;i>1;i--){
int max=0;
max=0;
for(int j=1;j<=i;j++){
if(a[j]>a[max])max=j;
}
int temp=0;
temp=a[max];
a[max]=a[i];
a[i]=temp;
}
}
int main()
{
int arr[10];
for(int i=0;i<10;i++)cin>>arr[i];
sorts(arr,10);
for(int i=0;i<10;i++)cout<<arr[i];
getchar();
getchar();
}
这个题我调试了很久,但是并不知道该怎么调试。。。所以用9876543210这组数手算了一遍,程序台输出结果是0412356789.手算依旧没发现问题在哪,而后看了书上的答案,发现我用i,代表数组下标,书上直接用n,代表元素个数。思路一样,所以我想应该是边界条件控制出错了。依次检查for循环,发现j的最大值应该是i,而不是i-1。更正过后就输出正确了。