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

Java函数实现排序算法的代码示例

发布时间:2023-06-03 23:27:01

排序算法是计算机科学中的基本算法之一,是对一组数据按照一定的顺序排列的过程。Java是一门面向对象的编程语言,其作为一种非常流行的编程语言,自然也有各种各样的排序算法实现。下面我们就来看一些Java函数实现的排序算法代码示例。

1. 冒泡排序

冒泡排序,是一种简单的排序算法。它重复地遍历数列,比较相邻的元素,如果顺序不对就交换它们的位置。每次遍历都可以确定一个未排序元素的位置。

public static void bubbleSort(int[] arr) {
    int n = arr.length;
    for (int i = 0; i < n - 1; i++) {
        for (int j = 0; j < n - i - 1; j++) {
            if (arr[j] > arr[j + 1]) {
                int temp = arr[j];
                arr[j] = arr[j + 1];
                arr[j + 1] = temp;
            }
        }
    }
}

2. 选择排序

选择排序,也是一种简单的排序算法。它的基本思想是,首先在未排序的数列中找到最小的元素,然后将其放到数列的起始位置,接着再从剩余未排序的元素中寻找最小的元素,放到以前已排序的元素后面。重复这个过程,直到所有元素都排好序。

public static void selectSort(int[] arr) {
    int n = arr.length;
    for (int i = 0; i < n - 1; i++) {
        int min = i;
        for (int j = i + 1; j < n; j++) {
            if (arr[j] < arr[min]) {
                min = j;
            }
        }
        int temp = arr[i];
        arr[i] = arr[min];
        arr[min] = temp;
    }
}

3. 插入排序

插入排序,也是一种简单的排序算法。它的基本思想是将未排序的元素插入已排序的元素中。在插入元素之前,已排序的元素的值都比待排序的元素小。插入时将已排序的元素中比待排序的元素大的元素向右移,为待排序的元素创造出一个正确的位置。

public static void insertSort(int[] arr) {
    int n = arr.length;
    for (int i = 1; i < n; ++i) {
        int key = arr[i];
        int j = i - 1;
        while (j >= 0 && arr[j] > key) {
            arr[j + 1] = arr[j];
            j = j - 1;
        }
        arr[j + 1] = key;
    }
}

4. 希尔排序

希尔排序,也是一种简单的排序算法。它是基于插入排序的一种改进,先将数组分成若干个子序列,对子序列进行插入排序,然后在逐步缩小子序列的规模进行插入排序,最后子序列的规模为1时,进行最后一次插入排序即可。

public static void shellSort(int[] arr) {
    int n = arr.length;
    for (int gap = n / 2; gap > 0; gap /= 2) {
        for (int i = gap; i < n; i += 1) {
            int temp = arr[i];
            int j;
            for (j = i; j >= gap && arr[j - gap] > temp; j -= gap) {
                    arr[j] = arr[j - gap];
            }
            arr[j] = temp;
        }
    }
}

5. 快速排序

快速排序,是一种常用的排序算法。它的基本思想是,在待排序的元素中选取一个关键元素(pivot),将所有小于它的元素移动到它的左边,大于它的元素移动到它的右边。然后对左右两部分再递归调用快速排序,直到所有元素都排好序。

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

private static int partition(int[] arr, int low, int high) {
    int pivot = arr[high];
    int i = (low - 1);
    for (int j = low; j < high; 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[high];
    arr[high] = temp;
    return i + 1;
}

以上是一些Java函数实现的排序算法代码示例,可以供大家参考、学习。这些排序算法有些简单,有些复杂,但都是十分常见的排序算法。在实际编程中可以根据不同的需求选择适合的排序算法。