📜  排序java(1)

📅  最后修改于: 2023-12-03 14:54:42.256000             🧑  作者: Mango

排序Java

排序是程序中常见的操作,它将一组数据按照某种规则进行排列,使得数据更加有序且易于访问。Java提供了多种排序算法,以下会简要介绍几种其中较为常见的排序算法。

冒泡排序

冒泡排序是一种基础的排序算法,其思想是每次比较相邻的两个元素,将较大的不断向后交换,经过一轮比较后最大的元素就会被移动到最后面。不断重复这个过程,直到所有元素都有序排列。以下是该算法的Java代码:

public static void bubbleSort(int[] arr) {
    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;
            }
        }
    }
}
插入排序

插入排序是一个稳定的排序算法,其思想是将一组数据分成已排序和未排序两部分,每次将未排序的第一个元素插入到已排序的合适位置。以下是该算法的Java代码:

public static void insertionSort(int[] arr) {
    for (int i = 1; i < arr.length; i++) {
        int key = arr[i];
        int j = i - 1;
        while (j >= 0 && arr[j] > key) {
            arr[j + 1] = arr[j];
            j--;
        }
        arr[j + 1] = key;
    }
}
快速排序

快速排序是一种高效的排序算法,其思想是选取一个关键元素,将数组划分为小于该元素和大于该元素的两个部分,然后再对这两个部分分别进行快速排序,最后将结果合并起来。以下是该算法的Java代码:

public static void quickSort(int[] arr, int low, int high) {
    if (low < high) {
        int partitionIndex = partition(arr, low, high);
        quickSort(arr, low, partitionIndex - 1);
        quickSort(arr, partitionIndex + 1, high);
    }
}

public static int partition(int[] arr, int low, int high) {
    int pivot = arr[low];
    while (low < high) {
        while (low < high && arr[high] >= pivot) {
            high--;
        }
        arr[low] = arr[high];
        while (low < high && arr[low] <= pivot) {
            low++;
        }
        arr[high] = arr[low];
    }
    arr[low] = pivot;
    return low;
}
归并排序

归并排序是一种利用分治思想的高效排序算法,其思想是将一组数据分成两个大致相等的部分,分别对其进行排序,然后再将两个有序的部分合并起来。以下是该算法的Java代码:

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

public static void merge(int[] arr, int left, int middle, int right) {
    int[] temp = new int[right - left + 1];
    int i = left;
    int j = middle + 1;
    int k = 0;
    while (i <= middle && j <= right) {
        if (arr[i] <= arr[j]) {
            temp[k++] = arr[i++];
        } else {
            temp[k++] = arr[j++];
        }
    }
    while (i <= middle) {
        temp[k++] = arr[i++];
    }
    while (j <= right) {
        temp[k++] = arr[j++];
    }
    for (int l = 0; l < k; l++) {
        arr[left + l] = temp[l];
    }
}

以上是四种常见的排序算法的Java代码,程序员可根据自己的需求选择不同的排序算法进行实现。