dabocaiqq 2020-07-14 15:15 采纳率: 63.1%
浏览 96
已采纳

高分悬赏:Java语言求高人编写一个完整的调用的例子,利用compareTo来实现快速排序

高分悬赏:Java语言求高人编写一个完整的调用的例子,利用compareTo来实现快速排序

  • 写回答

2条回答 默认 最新

  • 毕小宝 博客专家认证 2020-08-07 13:44
    关注

    参考代码:

    //一趟快速排序的过程
     public static int procedure(Object[] arr,int start,int end){
            Object flag = arr[start];   //上述文字中描述的枢轴记录,通常是第一个记录即arr[start]
            Object temp = null;
            //start =end 时,一趟快速排序结束
            while(start < end){
                while(start < end && arr[end].hashCode() >= flag.hashCode()){
                    end--;
                }
                temp = arr[start];
                arr[start] = arr[end];
                arr[end] = temp;
                while(start < end && arr[start].hashCode() <= flag.hashCode()){
                    start++;
                }
                temp = arr[start];
                arr[start] = arr[end];
                arr[end] = temp;
            }
            //返回start值,start值为整个数组前半区和后半区的分隔坐标
            return start;
        }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
  • #朱守成# 2020-07-14 15:41
    关注
    import java.util.ArrayList;
    import java.util.Collections;
    import java.util.List;
    
    public class CompareToMain {
    
        public static void main(String[] args) {
            List<Student> list = new ArrayList<>();
            list.add(new Student(12, "张三"));
            list.add(new Student(16, "李四"));
            list.add(new Student(11, "王二"));
            list.add(new Student(10, "麻子"));
            System.out.println("排序前:"+ list);
            // java.lang.util包中提供的排序算法,会调用Student对象的compareTo方法进行对象大小比较,compareTo方法中可以自定义大小比较规则,比如按年龄排序
            // 该方法传入list中的对象必需实现comparable接口的compareTo方法
            Collections.sort(list);
            System.out.println("排序后:"+ list);
        }
    }
    
    public class Student implements Comparable<Student> {
    
        private int age;
    
        private String name;
    
        public Student(int age, String name) {
            this.age = age;
            this.name = name;
        }
    
        @Override
        public int compareTo(Student s) {
            // 这里可以自定义比较大小规则,比如按年龄
            if (s.getAge() > age) {
                return -1;
            } else {
                return 1;
            }
        }
    
        @Override
        public String toString() {
            return "Student{" +
                    "age=" + age +
                    ", name='" + name + '\'' +
                    '}';
        }
    
        ///////////////////////////////////getter and setter///////////////////////////////
    
        public int getAge() {
            return age;
        }
    
        public void setAge(int age) {
            this.age = age;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    }
    

    执行结果:
    图片说明

    compareTo方法主要用来自定义对象的比较大小规则

    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 霍利韦尔软件web station N4的安装密码忘记了能找回吗
  • ¥20 帮电子新生画个仿真图吧🥰
  • ¥25 实验:WordCount案例实践(根据实验指导书编写实验报告。要求:文字加图)
  • ¥20 基于STM32F407设计一个贪食蛇游戏,要求:1有开始 、结束界面,能进行游戏设置,如:界面颜色,蛇移动速度。2蛇体能上下左右移动且在界面能随机生成食物,蛇吃后会变长;3小蛇碰壁死亡,显示游戏结束。
  • ¥15 摁摁钮(接P3.4口)无法实现点阵管播放速度调节,大家能帮我看看是什么问题吗?TAT
  • ¥15 小型网络防火墙mstp.vrrp.ospf配置
  • ¥15 grafna发送告警信息
  • ¥15 51单片机,LCD屏幕内容修改
  • ¥20 Ida Pro动态调试
  • ¥15 TensorFlow深度学习拓展项目