整型数组按个位值排序

给定一个非空数组(列表),其元素数据类型为整型,请按照数组元素十进制最低位从小到大进行排序,十进制最低位相同的元素,相对位置保持不变。
当数组元素为负值时,十进制最低位等同于去除符号位后对应十进制值最低位

#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
vector<int> split(const string &str, const string &pattern) {
	vector<int> resVec;
	if ("" == str) {
		return resVec;
	}
	string strs = str + pattern;
	size_t pos = strs.find(pattern);
	size_t size = strs.size();
	while (pos != string::npos) {
		string x = strs.substr(0, pos);
		resVec.push_back(stoi(x));
		strs = strs.substr(pos + 1, size);
		pos = strs.find(pattern);
	}
	return resVec;
}
void mySort(vector<int> &arr) {
	int t = 0;
	for (int i = 1; i < arr.size(); ++i) {
		for (int j = 0; j < arr.size() - i; ++j) {
			if (abs(arr[j]) % 10 > abs(arr[j + 1]) % 10) {
				t = arr[j];
				arr[j] = arr[j + 1];
				arr[j + 1] = t;
			}
		}
	}
}
int main() {
	string s;
	cin >> s;
	vector<int> arr;
	arr = split(s, ",");
	mySort(arr);
	for (int i = 0; i < arr.size() - 1; ++i) {
		cout << arr[i] << ",";
	}
	cout << arr[arr.size() - 1] << endl;
	return 0;
}


import sys 
for line in sys.stdin:
    nums = line.strip().split(",")
    
def radix(nums):
    temp_dict = {0:[],1:[],2:[],3:[],4:[],5:[],6:[],7:[],8:[],9:[]}
    for num in nums:
        abs_num = abs(int(num))
        temp_dict[abs_num % 10].append(num)
    temp_list = []
    for i in range(10):
        temp_list += temp_dict[i]
    nums = temp_list
    
    return ",".join(temp_list)
print(radix(nums))

#include <bits/stdc++.h>

#define MAXN 1234

using namespace std;

int a[MAXN];
vector<int> res[10];
string str;

int str_to_int(string src) {
    if (src.size() == 0) {
        return 0;
    }
    int idx = 0;
    int res = 0;
    if (src[0] == '-' || src[0] == '+') {
        idx++;
    }
    for (; idx < (int)src.size(); idx++) {
        res *= 10;
        res += src[idx] - '0';
    }
    if (src[0] == '-') {
        return -res;
    }
    return res;
}

int input(int src[]) {
    int len = 0;
    string s = "";

    cin >> str;
    for (int i = 0; i < (int)str.size(); i++) {
        if (str[i] == ',') {
            src[len++] = str_to_int(s);
            s = "";
        } else {
            s += str[i];
        }
    }
    if (s != "") {
        src[len++] = str_to_int(s);
    }
    return len;
}

void init() {
    memset(a, 0, sizeof(a));
    for (int i = 0; i < 10; i++) {
        res[i].clear();
    }
}

int main() {
    init();
    int len = input(a);

    for (int i = 0; i < len; i++) {
        if (a[i] < 0) {
            res[(-a[i]) % 10].push_back(a[i]);
        } else {
            res[a[i] % 10].push_back(a[i]);
        }
    }
    bool fir = true;
    for (int i = 0; i < 10; i++) {
        for (int j = 0; j < (int)res[i].size(); j++) {
            if (fir == true) {
                cout << res[i][j];
                fir = false;
            } else {
                cout << "," << res[i][j];
            }
        }
    }
    cout << "\n";
    return 0;
}


if __name__ == "__main__":
    # 读取第一行的n
    input_str = input().split(",")
    output = sorted(input_str,key=lambda x: x[-1])
    print(",".join(output))



全部评论

相关推荐

02-26 09:15
已编辑
蚌埠学院 golang
点赞 评论 收藏
分享
xtu大迫杰:偶遇校友,祝校友offer打牌
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
正在热议
更多
# 春招至今,你的战绩如何? #
10723次浏览 93人参与
# 你的实习产出是真实的还是包装的? #
1924次浏览 42人参与
# 巨人网络春招 #
11351次浏览 223人参与
# 军工所铁饭碗 vs 互联网高薪资,你会选谁 #
7594次浏览 43人参与
# 简历第一个项目做什么 #
31710次浏览 337人参与
# 重来一次,我还会选择这个专业吗 #
433481次浏览 3926人参与
# 米连集团26产品管培生项目 #
5972次浏览 216人参与
# 当下环境,你会继续卷互联网,还是看其他行业机会 #
187155次浏览 1122人参与
# 牛客AI文生图 #
21442次浏览 238人参与
# 不考虑薪资和职业,你最想做什么工作呢? #
152390次浏览 888人参与
# 研究所笔面经互助 #
118933次浏览 577人参与
# 简历中的项目经历要怎么写? #
310259次浏览 4215人参与
# AI时代,哪些岗位最容易被淘汰 #
63661次浏览 824人参与
# 面试紧张时你会有什么表现? #
30507次浏览 188人参与
# 你今年的平均薪资是多少? #
213090次浏览 1039人参与
# 你怎么看待AI面试 #
180059次浏览 1256人参与
# 高学历就一定能找到好工作吗? #
64327次浏览 620人参与
# 你最满意的offer薪资是哪家公司? #
76497次浏览 374人参与
# 我的求职精神状态 #
448054次浏览 3129人参与
# 正在春招的你,也参与了去年秋招吗? #
363412次浏览 2638人参与
# 腾讯音乐求职进展汇总 #
160646次浏览 1112人参与
# 校招笔试 #
470952次浏览 2964人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务