## 解析Arrays.sort()方法 排序问题

这篇具有很好参考价值的文章主要介绍了## 解析Arrays.sort()方法 排序问题。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Integer arr[] = {1, 21, 32, 4, 5, 6, 7, 8};

Arrays.sort(arr, new Comparator<Integer>(){

    @Override
    public int compare(Integer o1, Integer o2) {
        return o1 - o2;
    }
});

首先,Arrays.sort() 需要传入两个参数。

第一个参数是需要排序的数组,但是该数组不能是基本数据类型,必须是引用数据类型。

第二个参数是一个接口,所以我们在调用方式的时候,需要传递这个接口的实现类对象,这个实现类可以用匿名内部类的方式实现。

底层原理分析

该方法是利用插入排序 + 二分查找的方式进行排序的

默认把0索引的数据当做是有序的序列,1索引到最后认为是无需的序列。

遍历无序的序列得到里面的每一个元素,假设当前遍历得到的元素是A元素。

把A往有序序列中进行插入时,在插入的时候,是利用二分查找确定A元素的插入点。

拿着A元素,跟插入点的元素进行比较,比较的规则就是compare方法的方法体。

如果方法的返回值是负数,拿着A继续和前面的数据进行比较。

如果方法的返回值是正数,拿着A继续和后面的数据进行比较

如果方法的返回值是0,也拿着A跟后面的数据进行比较。

  • compare方法的形式参数

    o1:表示在无序序列中,遍历得到的每一个元素

    o2:有序序列中的元素

  • 返回值:

    负数:表示当前要插入的元素是小的,放在前面

    正数:表示当前要插入的元素是大的,放在后面

    0:表示当前要插入的元素跟现在的元素比是一样的也会放在后面

简单理解:

o1 - o2:升序排序

o2 - o1:降序排序文章来源地址https://www.toymoban.com/news/detail-774607.html

到了这里,关于## 解析Arrays.sort()方法 排序问题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • arrays.sort用法详解

    大家好,我是免费搭建查券返利机器人赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿!在编程的世界中,数组(arrays)是一种常见且重要的数据结构,而在Java中,对数组进行排序是经常遇到的需求之一。今天,我们将深入探讨Java中的 Arrays

    2024年02月04日
    浏览(43)
  • 笔记--java sort() 方法排序

    最近在刷一道算法题 《字符串重新排序》时,发现自己有思路但是写代码的时候就无从下手了 而且看了答案之后还没看懂 关键就是基础不好 对于排序没有理解(虽然我学过常用的排序算法 但是都是理念 实践少) 从实践和原理出发 重点是从实践出发 探讨如何使用 sort()方法

    2024年02月07日
    浏览(46)
  • leetcode Median of Two Sorted Arrays

    Given two sorted arrays  nums1  and  nums2  of size  m  and  n  respectively, return  the median  of the two sorted arrays. The overall run time complexity should be  O(log (m+n)) . Example 1: Example 2: Constraints: nums1.length == m nums2.length == n 0 = m = 1000 0 = n = 1000 1 = m + n = 2000 -106 = nums1[i], nums2[i] = 106

    2023年04月08日
    浏览(39)
  • 原生JS之sort排序方法详解

    在JavaScript中排序主要用到的api就是sort了,但是使用sort有几个坑需要注意,让我们一起来看看 sort() 方法用于对 数组 的元素进行排序。排序顺序可以是字母或数字,并按升序或降序。 默认排序顺序为按字典升序。 在不使用参数时,sort使用的是字典排序 如果数组中元素都是

    2024年02月03日
    浏览(32)
  • TypeError: only integer scalar arrays can be converted to a scalar index

    报错信息: 类型错误,只有整型标量数组才能转换成标量索引,但一般问题都不在于你的索引是不是整数。这个报错一般会出现在你想使用一个索引列表去索引另一个列表,即诸如list[index_list]的形式,此时就会出现此报错,因为 index_list 为 List列表类型,不被允许;如果是数

    2024年02月11日
    浏览(67)
  • Leetcode 56. 合并区间(排序 + sort 方法的注意)

    Leetcode 56. 合并区间(排序 + sort 方法的注意) 题目 以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i] = [starti, endi] 。 请你合并所有重叠的区间,并返回 一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间 。 1 = intervals.length = 10^4 intervals[i].length ==

    2024年02月10日
    浏览(49)
  • LeetCode //C - 4. Median of Two Sorted Arrays

    Given two sorted arrays nums1 and nums2 of size m and n respectively, return the median of the two sorted arrays. The overall run time complexity should be O(log (m+n)) .   Example 1: Input: nums1 = [1,3], nums2 = [2] Output: 2.00000 Explanation: merged array = [1,2,3] and median is 2. Example 2: Input: nums1 = [1,2], nums2 = [3,4] Output: 2.50000 Explanati

    2024年02月06日
    浏览(40)
  • 数组排序 sort() 方法 (映射对含有大小写的字符串进行排序)

    结论先行: sort() 方法: 用于对数组元素进行 排序 ,默认升序。如果指明了参数,那数组会按照 比较函数 的返回值进行排序。    sort() 方法比较两个值时,将值发送给比较函数,根据返回的(负、零、正)值对值进行排序。 举例,a 和 b 两个将要被比较的元素: 如果 a-

    2024年04月25日
    浏览(41)
  • 使用Java的stream().sorted方法对集合进行排序

    Java Stream API 提供了丰富的方法来对流中的元素进行处理和操作。其中, sorted() 方法用于对流中的元素进行排序。本文将深入探讨 sorted() 方法的用法、示例代码以及详细解释,以帮助您更好地理解和使用这个方法。 StreamT sorted() : 这个方法用于对流中的元素进行自然排序。要

    2024年02月04日
    浏览(55)
  • 使用Collections.sort方法来对自定义对象进行排序

    Collections.sort方法可以用来对自定义对象进行排序。要实现这一点,需要在调用该方法时传入一个比较器,该比较器用于指定如何比较对象中的值。 举个例子,假设有一个自定义对象Person,其中包含姓名和年龄两个属性,我们可以使用以下代码对该对象列表进行按年龄排序:

    2024年02月13日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包