下面再来看看Arrays里面的合并排序算法实现。先把完整的源代码贴过来看看
public static void sort(Object[] a, int fromIndex, int toIndex) {
rangeCheck(a.length, fromIndex, toIndex);
Object[] aux = copyOfRange(a, fromIndex, toIndex);
mergeSort(aux, a, fromIndex, toIndex, -fromIndex);
}
private static void mergeSort(Object[] src,
Object[] dest,
int low,
int high,
int off) {
int length = high - low;
// Insertion sort on smallest arrays
if (length < INSERTIONSORT_THRESHOLD/*=7*/) {
for (int i=low; i<high; i++)
for (int j=i; j>low &&
((Comparable) dest[j-1]).compareTo(dest[j])>0; j--)
swap(dest, j, j-1);
return;
}
// Recursively sort halves of dest into src
int destLow = low;
int destHigh = high;
low += off;
high += off;
int mid = (low + high) >>> 1;
mergeSort(dest, src, low, mid, -off);
mergeSort(dest, src, mid, high, -off);
// If list is already sorted, just copy from src to dest. This is an
// optimization that results in faster sorts for nearly ordered lists.
if (((Comparable)src[mid-1]).compareTo(src[mid]) <= 0) {
System.arraycopy(src, low, dest, destLow, length);
return;
}
// Merge sorted halves (now in src) into dest
for(int i = destLow, p = low, q = mid; i < destHigh; i++) {
if (q >= high || p < mid && ((Comparable)src[p]).compareTo(src[q])<=0)
dest[i] = src[p++];
else
dest[i] = src[q++];
}
}
分享到:
相关推荐
在Java中实现这些排序算法,通常会用到`Arrays`类中的`sort()`方法,以及自定义的比较器`Comparator`。通过编写不同的比较逻辑,可以实现各种排序需求。此外,理解这些算法的工作原理,有助于在实际开发中选择最合适...
在Java中,这些排序算法都可以用代码实现,可以通过`java.util.Arrays.sort()`方法使用内置的快速排序或归并排序,也可以自定义排序逻辑。在`AllSort`这个压缩包中,可能包含了这八种排序算法的Java实现代码,通过...
本篇文章将深入探讨八大常见的排序算法,并提供它们在Java语言中的具体实现。这八大排序算法包括冒泡排序、选择排序、插入排序、希尔排序、归并排序、快速排序、堆排序以及计数排序。 1. 冒泡排序(Bubble Sort):...
Java的`java.util.Arrays.sort()`方法默认使用了Timsort,这是一种改良的合并排序算法,具有很好的稳定性。 5. **快速排序**:快速排序由C.A.R. Hoare提出,是目前应用最广泛的排序算法之一。它选取一个“基准”...
了解和掌握这些排序算法的原理和实现方式,不仅有助于编写高效的排序代码,还能帮助我们在面对实际问题时选择最合适的解决方案。在学习过程中,可以结合实际例子,通过编写代码来加深理解,同时通过分析时间复杂度和...
- Java排序算法包可能包含了上述的多种排序算法实现,用户可以根据数据规模、数据特点以及性能要求选择合适的算法。 - 如果需要排序的对象有复杂的比较规则,自定义`Comparator`是一个很好的解决方案。 总的来说...
Java提供了`java.util.Arrays.sort()`方法,内部实现了TimSort,这是一种混合排序算法,结合了插入排序和归并排序的优点,能在很多情况下提供良好的性能。 总的来说,理解并熟练掌握不同的排序算法对于提升程序的...
在Java编程语言中,排序算法是数据结构与算法...在实际编程中,Java集合框架中的`Collections.sort()`和`Arrays.sort()`方法已经为我们提供了排序功能,但了解底层的排序算法原理,有助于我们更好地理解和优化代码。
在Java中,除了使用上述基本排序算法,还可以使用内置的`Arrays.sort()`方法,该方法内部实现了高效的TimSort算法,适用于处理大数据集,具有稳定性,并且在数据部分有序的情况下表现出色。 这个压缩文件中的".htm"...
Java作为流行的编程语言,提供了丰富的内置排序方法,如Arrays.sort(),但对于特定需求,自定义排序算法的实现也是必要的。通过理解并掌握这些排序算法,可以提升编程能力,更好地解决实际问题。
### 常用排序算法分析与实现(Java版) #### 插入排序 **1. 直接插入排序** 直接插入排序是一种简单的排序方法,它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并...
在编程领域,排序算法是计算机科学中的核心概念,特别是在数据结构和算法分析中。...在实际开发中,还可以考虑结合Java的内置排序函数`Arrays.sort()`,它使用了一种高效的混合排序算法,可以处理各种数据类型。
在编程领域,排序算法是计算机科学中的核心...在Java中,可以使用内置的`Arrays.sort()`或`Collections.sort()`方法,它们底层实现了高效的排序算法,如TimSort,一种混合排序算法,具有稳定性且在实际应用中表现出色。
这篇博客"各种排序算法java实现"可能详细介绍了如何使用Java来实现这些算法。虽然没有提供具体的博客内容,但我们可以根据常见的排序算法来探讨相关的知识点。 1. **冒泡排序**: 冒泡排序是最基础的排序算法,...
在Java编程语言中,排序算法是数据结构与算法学习中的重要组成部分。它们用于对数组、列表或其他可迭代...在Java中,`Arrays.sort()`方法使用了一种混合排序算法,结合了快速排序和插入排序的优点,适用于大多数情况。
在计算机科学中,排序算法是数据处理的重要组成部分,主要用于对一组数据进行有序排列。...同时,Java的Collections.sort()和Arrays.sort()方法在底层使用了高效的排序算法,通常无需手动实现排序,除非有特殊需求。
这个压缩包文件提供了Java实现的常见排序算法,对于初学者和有经验的开发者来说,都是一个宝贵的资源。 首先,让我们了解一下排序算法的基本概念。排序算法是一种能将一串数据按照特定顺序进行排列的算法。常见的...
总结,Java的`sort`排序算法通过高效的TimSort算法实现了稳定且高效的排序,不仅适用于基本类型数组和对象数组,还广泛应用于`List`类型的集合排序。通过自定义`Comparator`,可以满足各种复杂的排序需求。在实际...