服务器学习网 > 编程学习 > 常见的七种Java排序算法原理是什么,怎样实现?

常见的七种Java排序算法原理是什么,怎样实现?

服务器学习网综合整理   2024-10-18 18:43:11

一、冒泡排序(Bubble Sort) 原理:冒泡排序通过重复遍历要排序的数列,比较相邻元素的大小,如果顺序错误则交换它们。这个过程会重复进行,直到数列完全有序。 实现: public void bubbleSort(int[] array) { int n = array.length; ...

在Java编程中,排序算法是数据处理和算法设计中的基础。它们通过将一组数据按照一定的顺序排列,使得数据的查找、比较等操作更加高效。常见的七种Java排序算法包括冒泡排序、快速排序、插入排序(直接和希尔)、选择排序(简单和堆)、归并排序和堆排序。接下来,我们将详细探讨这些排序算法的原理及实现方式。

一、冒泡排序(Bubble Sort)

原理:冒泡排序通过重复遍历要排序的数列,比较相邻元素的大小,如果顺序错误则交换它们。这个过程会重复进行,直到数列完全有序。

实现

public void bubbleSort(int[] array) {
    int n = array.length;
    for (int i = 0; i < n - 1; i++) {
        boolean flag = true;
        for (int j = 0; j < n - 1 - i; j++) {
            if (array[j] > array[j + 1]) {
                swap(array, j, j + 1);
                flag = false;
            }
        }
        if (flag) {
            break;
        }
    }
}

二、快速排序(Quick Sort)

原理:快速排序是一种分治算法,通过选择一个基准值(pivot),将数组分为两个子数组,一个包含所有小于基准值的元素,另一个包含所有大于基准值的元素,然后递归地对这两个子数组进行快速排序。

实现

public void quickSort(int[] array, int low, int high) {
    if (low >= high) {
        return;
    }
    int pivot = array[low];
    int i = low, j = high;
    while (i < j) {
        while (array[j] >= pivot && i < j) {
            j--;
        }
        while (array[i] <= pivot && i < j) {
            i++;
        }
        if (i < j) {
            swap(array, i, j);
        }
    }
    array[low] = array[j];
    array[j] = pivot;
    quickSort(array, low, j - 1);
    quickSort(array, j + 1, high);
}

三、插入排序(Insertion Sort)

原理:插入排序将数组分为已排序和未排序两部分,每次从未排序部分取出一个元素,在已排序部分找到合适的位置插入。

实现(直接插入排序):

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

四、希尔排序(Shell Sort)

原理:希尔排序是插入排序的一种高效改进版,通过将原始数组分割成多个子序列分别进行直接插入排序,待整个序列基本有序时,再对全体记录进行直接插入排序。

实现

public void shellSort(int[] array) {
    for (int gap = array.length / 2; gap >= 1; gap /= 2) {
        for (int i = gap; i < array.length; i++) {
            int tmp = array[i];
            int j = i - gap;
            while (j >= 0 && array[j] > tmp) {
                array[j + gap] = array[j];
                j -= gap;
            }
            array[j + gap] = tmp;
        }
    }
}

五、选择排序(Selection Sort)

原理:选择排序首先在未排序序列中找到最小(或最大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(或最大)元素,然后放到已排序序列的末尾。

常见的七种Java排序算法原理是什么,怎样实现?

实现(简单选择排序):


public void selectionSort(int[] array) {
    for (int i = 0; i < array.length - 1; i

推荐文章