小白教程

 找回密码
 立即注册
查看: 7597|回复: 3

[已解决]Arrays类实现排序有人可以讲讲其原理吗?

[复制链接]

1

主题

1

帖子

3

积分

新手上路

Rank: 1

积分
3
发表于 2021-5-28 15:36:55 | 显示全部楼层 |阅读模式
  1. System.out.println("通过Comparator接口,多态机制,匿名内部类实现定制排序:");
  2.         Integer[] arr2={8,9,4,10,5,6,1};  //包装类数组
  3.         Arrays.sort(arr2, new Comparator<Integer>() {
  4.             @Override  //重写接口的compare方法
  5.             public int compare(Integer o1, Integer o2) {
  6.                 Integer In1 = (Integer)o1;
  7.                 Integer In2 = (Integer)o2;
  8.                 return In1-In2;
  9.             }
  10.         });
  11.         System.out.println(Arrays.toString(arr2));
复制代码


最佳答案
2021-6-1 00:02:28
二叉树也一样,比如用插入节点来生成二叉树,插入的节点是该插在左子树还是插在右子树,也是把手写比较两个节点改成用比较器来比较两个节点
回复

使用道具 举报

0

主题

2

帖子

4

积分

新手上路

Rank: 1

积分
4
发表于 2021-5-30 05:06:54 | 显示全部楼层
当您将其与Comparator进行比较时,可以使用Comparator实现对其进行排序
回复

使用道具 举报

0

主题

2

帖子

4

积分

新手上路

Rank: 1

积分
4
发表于 2021-5-30 15:28:42 | 显示全部楼层
这里的重点是,当你排序的时候,你写你自己的比较,你用比较器代替

  1. //自己手写排序处理(以冒泡为例)
  2. for(int i=0; i<arr2.length; i++) {
  3.     for(int j=0; j<arr2.length-i-1; j++) {
  4.         if(arr2[j] > arr2[j+1]) { //这里是手写比较,比较方式是固定的
  5.             int tmp=arr2[j];
  6.             arr2[j] = arr2[j+1];
  7.             arr2[j+1]=tmp;
  8.         }
  9.     }
  10. }
  11. //改成用比较器比较
  12. for(int i=0; i<arr2.length; i++) {
  13.     for(int j=0; j<arr2.length-i-1; j++) {
  14.         if(comp.compare(arr2[j], arr2[j+1])>0) { //这里改成用比较器比较,这样就可以改变比较器的逻辑也就是改变compare方法来达到不同的排序结果
  15.             int tmp=arr2[j];
  16.             arr2[j] = arr2[j+1];
  17.             arr2[j+1]=tmp;
  18.         }
  19.     }
  20. }
复制代码
回复

使用道具 举报

0

主题

1

帖子

2

积分

新手上路

Rank: 1

积分
2
发表于 2021-6-1 00:02:28 | 显示全部楼层 &
二叉树也一样,比如用插入节点来生成二叉树,插入的节点是该插在左子树还是插在右子树,也是把手写比较两个节点改成用比较器来比较两个节点
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|小白教程 ( 粤ICP备20019910号 )

GMT+8, 2024-11-24 12:52 , Processed in 0.023643 second(s), 25 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc. Template By 【未来科技】【 www.wekei.cn 】

快速回复 返回顶部 返回列表