请教一个关于JAVA的排序问题,看看有没有什么简便的算法

Hd_vip 2016-09-23 03:00:05
比如有这样的list
[1, 4, 3, 5, 2]
目的让这个list的分别将最大与最小互换并保持原位(不知道怎么描述),交换后如下:
[5, 2, 3, 1, 4]

又比如:原list为
[1, 1, 5, 2, 3]
则交换后如下:
[5, 5, 1, 3, 2]

大家有没有什么好算法分享一下(想的脑袋都疼了)
...全文
163 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
list变成set,将set排序,把顺序的set作为map的key,逆序的set作为map的value,遍历list的值对应map的key,将map的value赋值给list。
fondOfJava 2016-09-23
  • 打赏
  • 举报
回复

       List<Integer> originaList = Arrays.asList(1, 4, 3, 5, 2);

        Set<Integer> set = new HashSet<>();
        set.addAll(originaList);

        List<Integer> sortlist1 = new ArrayList<>(set);
        Collections.sort(sortlist1);//1,2,3,4,5
        List<Integer> sortlist2 = new ArrayList<>(sortlist1);
        Collections.reverse(sortlist2);//5,4,3,2,1

        Map<Integer, Integer> m = new HashMap<>();
        for (int i = 0; i < sortlist1.size(); i++) {
            m.put(sortlist1.get(i), sortlist2.get(i));
        }

        for (int i : originaList) {
            System.out.print(m.get(i) + " ");
        }
可能有更好的方法.......
  • 打赏
  • 举报
回复
这是个很好处理的问题,楼主自己在加强一下基础不要做伸手党
fondOfJava 2016-09-23
  • 打赏
  • 举报
回复
分数太低。。。。

62,615

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧