java排序方法有哪些类型

Java排序方法有哪些?

在Java编程中,对数据进行排序是非常常见的需求,Java提供了多种排序方法,包括内置的排序方法和自定义排序方法,本文将介绍Java中的几种常用排序方法,包括冒泡排序、选择排序、插入排序、希尔排序、归并排序、快速排序和堆排序。

java排序方法有哪些类型

1、冒泡排序(Bubble Sort)

冒泡排序是一种简单的排序算法,它重复地遍历要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来,遍历数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。

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;
            }
        }
    }
}

2、选择排序(Selection Sort)

选择排序是一种简单直观的排序算法,它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。

java排序方法有哪些类型

public static void selectionSort(int[] arr) {
    for (int i = 0; i < arr.length 1; i++) {
        int minIndex = i;
        for (int j = i + 1; j < arr.length; j++) {
            if (arr[j] < arr[minIndex]) {
                minIndex = j;
            }
        }
        if (minIndex != i) {
            int temp = arr[i];
            arr[i] = arr[minIndex];
            arr[minIndex] = temp;
        }
    }
}

3、插入排序(Insertion Sort)

插入排序是一种简单直观的排序算法,它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。

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;
    }
}

4、希尔排序(Shell Sort)

希尔排序是一种基于插入排序的高效排序算法,它首先对原始数据进行分组,将待排序的数据按照一定的增量分组;然后对每组数据进行插入排序;最后通过不断缩小增量的方式,对各组数据进行插入排序直至整个序列有序。

java排序方法有哪些类型

public static void shellSort(int[] arr) {
    int gap = getGap(arr); // 获取增量值
    while (gap > 0) { // 当增量大于0时,继续插入排序
        for (int i = gap; i < arr.length; i++) { // 对每组数据进行插入排序
            int key = arr[i]; // 将当前元素作为关键字
            int j = i; // 从当前位置开始向左寻找关键字的位置
            while (j >= gap && arr[j gap] > key) { // 如果左边有更大的关键字,则将左边的关键字向右移动一位
                arr[j] = arr[j gap];
                j -= gap;
            }
            arr[j] = key; // 将关键字插入到正确的位置上
        }
        gap = getGap(arr); // 继续缩小增量值,进行下一次插入排序
    }
}

5、归并排序(Merge Sort)

归并排序是一种采用分治法的高效排序算法,它将待排序的序列分为两个子序列,对子序列分别进行归并排序;然后将有序的子序列合并成一个有序的序列。

public static void mergeSort(int[] arr, int left, int right) {
    if (left < right) { // 如果左边界小于右边界,则进行递归分割和合并操作
        int mid = (left + right) >>> 1; // 计算中间位置的索引值
        mergeSort(arr, left, mid); // 对左半部分进行归并排序
        mergeSort(arr, mid + 1, right); // 对右半部分进行归并排序
        merge(arr, left, mid, right); // 将两个有序子序列合并成一个有序序列
    }
}

6、快速排序(Quick Sort)

原创文章,作者:K-seo,如若转载,请注明出处:https://www.kdun.cn/ask/217504.html

(0)
K-seoK-seoSEO优化员
上一篇 2024年1月13日 09:33
下一篇 2024年1月13日 09:40

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

免备案 高防CDN 无视CC/DDOS攻击 限时秒杀,10元即可体验  (专业解决各类攻击)>>点击进入