Java语言中进行排序时,常用的两种方式是堆内和堆外排序。
堆内排序,也称为内存排序,是指算法在内存中完成排序。这种方法适用于小数据量的排序,因为对于大数据量的排序,内存往往不足以存储全部的数据。堆内排序的算法有插入排序、选择排序、冒泡排序等。
public static void bubbleSort(int[] array) {
for (int i = 0; i< array.length - 1; i++) {
for (int j = 0; j< array.length - 1 - i; j++) {
if (array[j] >array[j + 1]) {
int temp = array[j];
array[j] = array[j + 1];
array[j + 1] = temp;
}
}
}
}
堆外排序,也称为外部排序,是指将全部数据存储在外部存储设备中,比如硬盘,由于硬盘容量很大,所以可以存储大数据量的排序数据。外部排序的算法有归并排序、快速排序等。
public static void mergeSort(int[] array, int left, int right) {
if (left< right) {
int mid = (left + right) / 2;
mergeSort(array, left, mid);
mergeSort(array, mid + 1, right);
merge(array, left, mid, right);
}
}
private static void merge(int[] array, int left, int mid, int right) {
int[] temp = new int[right - left + 1];
int i = left;
int j = mid + 1;
int k = 0;
while (i<= mid && j<= right) {
if (array[i]<= array[j]) {
temp[k++] = array[i++];
} else {
temp[k++] = array[j++];
}
}
while (i<= mid) {
temp[k++] = array[i++];
}
while (j<= right) {
temp[k++] = array[j++];
}
for (int m = 0; m< temp.length; m++) {
array[left + m] = temp[m];
}
}
总的来说,堆内排序适用于小数据量的排序,而堆外排序则适用于大数据量的排序。