a225 - 明明愛排列
題目描述
題目要求根據明明喜歡的方式對給定的數字序列進行排序。排序規則如下:首先,按照個位數從小到大排序。如果個位數相同,則按照數字本身從大到小排序。
解題思路
這題的核心是實現一個自定義的排序規則。我們可以使用冒泡排序或其他排序算法,但需要修改比較函數,使其符合題目的要求。具體來說,比較函數需要先比較兩個數字的個位數,如果個位數不同,則按照個位數從小到大排序。如果個位數相同,則比較兩個數字本身的大小,按照從大到小排序。
複雜度分析
- 時間複雜度: O(n^2) (由於使用了冒泡排序)
- 空間複雜度: O(1) (使用了常數級別的額外空間)
程式碼
#include <iostream>
using namespace std;
int main(){
int a=0,tem=0;
while(cin >> a){
int b[a];
for(int i=0;i<a;i++){
cin >> b[i];
}
for(int i=0;i<a;i++){
for(int j=a-1;j>i;j--){
if(b[i]%10>b[j]%10){
tem=b[i];
b[i]=b[j];
b[j]=tem;
}
else if(b[i]%10==b[j]%10){
if(b[j]>b[i]){
tem=b[i];
b[i]=b[j];
b[j]=tem;
}
}
}
}
for(int i=0;i<a;i++){
cout << b[i] << " " ;
}
cout << endl;
}
}