自己编写的插入排序和Array.sort()

今天在做leetcode56,发现时间一直降不下来 最后发现是排序在搞事情

对二维数组根据第一个数排序
自己编写的插入排序
for(int i=1;i for(int j=i;j>0;j–) {
if(intervals[j][0] int[] arr = intervals[j];
intervals[j] = intervals[j-1];
intervals[j-1] = arr;
}
}
}

而答案是

Arrays.sort(arr,(a,b) ->a[0]-b[0]);

性能到底差在哪里呢?

原来
Arrays.sort 对小于47的用插入 大于得用双轴快排
1.对于很小的数组(长度小于47),会使用插入排序。
2.选择两个点P1,P2作为轴心,比如我们可以使用第一个元素和最后一个元素。
3.P1必须比P2要小,否则将这两个元素交换,现在将整个数组分为四部分:
(1)第一部分:比P1小的元素。
(2)第二部分:比P1大但是比P2小的元素。
(3)第三部分:比P2大的元素。
(4)第四部分:尚未比较的部分。
在开始比较前,除了轴点,其余元素几乎都在第四部分,直到比较完之后第四部分没有元素。
4.从第四部分选出一个元素a[K],与两个轴心比较,然后放到第一二三部分中的一个。
5.移动L,K,G指向。
6.重复 4 5 步,直到第四部分没有元素。
7.将P1与第一部分的最后一个元素交换。将P2与第三部分的第一个元素交换。
8.递归的将第一二三部分排序。
https://editor.csdn.net/md?articleId=107030876

你可能感兴趣的:(自己编写的插入排序和Array.sort())