欢迎访问宙启技术站
智能推送

用Java函数实现对数组进行排序的方法有哪些?

发布时间:2023-05-31 03:45:27

Java中有多种实现数组排序的方法,以下是常见的几种:

1. Arrays.sort()方法:

该方法是Java中最基本的数组排序方法,可以对任意类型的数组进行排序,使用默认的升序排列。通过传入Comparator接口的实例可以实现自定义的排序方式。示例代码如下:

int[] arr = {1, 4, 2, 7, 3};
Arrays.sort(arr);
System.out.println(Arrays.toString(arr)); //[1, 2, 3, 4, 7]

2. Collections.sort()方法:

该方法是对List集合进行排序的方法,由于List是一种容器,可以存储任意类型的数据,所以该方法可以对任意类型的数据进行排序操作。同样可以传入Comparator接口的实例,用于实现自定义排序。示例代码如下:

List<Integer> list = new ArrayList<>();
list.add(1);
list.add(4);
list.add(2);
list.add(7);
list.add(3);
Collections.sort(list);
System.out.println(list); //[1, 2, 3, 4, 7]

3. 冒泡排序:

冒泡排序是一种简单易懂的排序算法,它不需要额外的存储空间,只需要对相邻元素进行比较和交换操作即可。具体实现方式如下:

int[] arr = {1, 4, 2, 7, 3};
for (int i = 0; i < arr.length - 1; i++) {
    for (int j = 0; j < arr.length - 1 - i; j++) {
        if (arr[j] > arr[j+1]) {
            int temp = arr[j];
            arr[j] = arr[j+1];
            arr[j+1] = temp;
        }
    }
}
System.out.println(Arrays.toString(arr)); //[1, 2, 3, 4, 7]

4. 快速排序:

快速排序是一种高效的排序算法,采用分治法的思想将一个大问题分解成多个小问题,然后将小问题合并成大问题的解。具体实现方式如下:

void quickSort(int[] arr, int left, int right) {
    if (left < right) {
        int pivot = partition(arr, left, right);
        quickSort(arr, left, pivot-1);
        quickSort(arr, pivot+1, right);
    }
}

int partition(int[] arr, int left, int right) {
    int pivot = arr[right];
    int i = left - 1;
    for (int j = left; j < right; j++) {
        if (arr[j] < pivot) {
            i++;
            int temp = arr[i];
            arr[i] = arr[j];
            arr[j] = temp;
        }
    }
    int temp = arr[i+1];
    arr[i+1] = arr[right];
    arr[right] = temp;
    return i+1;
}

int[] arr = {1, 4, 2, 7, 3};
quickSort(arr, 0, arr.length-1);
System.out.println(Arrays.toString(arr)); //[1, 2, 3, 4, 7]

5. 归并排序:

归并排序是一种稳定的排序算法,它将一个大问题逐步分解成多个小问题,然后对小问题进行排序,再将有序的小问题合并成有序的大问题。具体实现方式如下:

void mergeSort(int[] arr, int left, int right) {
    if (left < right) {
        int mid = (left + right) / 2;
        mergeSort(arr, left, mid);
        mergeSort(arr, mid+1, right);
        merge(arr, left, mid, right);
    }
}

void merge(int[] arr, 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 (arr[i] < arr[j]) {
            temp[k++] = arr[i++];
        } else {
            temp[k++] = arr[j++];
        }
    }
    while (i <= mid) {
        temp[k++] = arr[i++];
    }
    while (j <= right) {
        temp[k++] = arr[j++];
    }
    for (int p = 0; p < temp.length; p++) {
        arr[left+p] = temp[p];
    }
}

int[] arr = {1, 4, 2, 7, 3};
mergeSort(arr, 0, arr.length-1);
System.out.println(Arrays.toString(arr)); //[1, 2, 3, 4, 7]

以上就是Java中常用的哪些对数组排序的方法。不同的排序算法适用于不同的场景和数据规模,可以根据具体情况选择不同的排序方法。