个人实现---多级排序
2021-02-08 03:18
标签:rgs 元素 util param order 简单 没有 根据 很多 写过SQL的都知道,有个Order By排序功能,这个Order By不仅能根据一个元素进行排序,还能同时根据多个元素进行排序。 你有没有好奇是怎么实现多个元素排序的呢?小编是很好奇。单个元素排序很简单,直接冒泡就行了,那么多个怎么实现呢?难道要写多个冒泡么? 带着疑问,开始了构思。最终大道至简,可以把多个元素拼接成一个大的元素进行比对,这样用一个冒泡就完成了多个元素排序。是不是豁然开朗。 其实很多问题都是可以分分合合的,最终就是为了计算。比如搞分布式就是为了分,方便每个节点进行计算。使用shuffling进行拉取,方便进行统一计算。 好了,扯得有点多了,下面上代码(这个是Java版的,道理是一样的,你可以翻译成其它语言): 其实编程就是思路,有了思路一切都好说。 个人实现---多级排序 标签:rgs 元素 util param order 简单 没有 根据 很多 原文地址:https://www.cnblogs.com/shuai7boy/p/12772190.htmlimport java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
public class Test {
public static void main(String[] args) {
// 构建数据
List
> list = new ArrayList
>();
list.add(Arrays.asList(1, 3, 4, 5));
list.add(Arrays.asList(1, 2, 4, 6));
list.add(Arrays.asList(4, 1, 7, 8));
list.add(Arrays.asList(3, 5, 7, 9));
list.add(Arrays.asList(2, 5, 7, 9));
list.add(Arrays.asList(4, 1, 6, 8));
// 设置通过前两个数据进行排序,索引设置索引1
SortMultiple(list, 1);
for (List
> list, int index) {
for (int i = 0; i ) {
for (int j = i + 1; j ) {
double bNumSum = 0;// 前一个数据
for (int bNum = index; bNum >= 0; bNum--) {
bNumSum += list.get(i).get(index - bNum).doubleValue() * Math.pow(10, bNum);
}
double eNumSum = 0;// 后一个数据
for (int eNum = index; eNum >= 0; eNum--) {
eNumSum += list.get(j).get(index - eNum).doubleValue() * Math.pow(10, eNum);
}
if (eNumSum // 此处是按照升序排序,如果降序的话改为>即可。
List
上一篇:【Python】字典类型