#include <iostream> using namespace std; int main() { int n; while(cin>>n){ int arr[n]; for(int i=0;i<n;i++)cin>>arr[i]; for(int k=n;k>=1;k--){ for(int i=0;i<k;i++){ if(arr[i]%10>arr[i+1]%10)swap(arr[i],arr[i+1]); else if(arr[i]%10==arr[i+1]%10){ if(arr[i]<arr[i+1])swap(arr[i],arr[i+1]); } } } for(int i=0;i<n;i++)cout<<arr[i]<<" "; cout<<endl; } return 0; } 您的答案為: 51 13 21915 106 46 26 98 正確答案為: 51 13 106 46 26 98 38
for(int k=n;k>=1;k--){ for(int i=0;i<k;i++){
k = n~1, i = 0~(k-1) 可得 (i+1) = 1~k = 1~n,也就是可能取到 arr[n]
的值,不在你輸入的範圍內