Java常见排序算法的代码分享和比较

分类:知识百科 日期: 点击:0

Java排序算法是计算机科学中一个重要的研究方向,它是指在一定的规则下对数据进行排序的算法。Java排序算法可以分为内部排序和外部排序,其中,内部排序是指将所有要排序的数据都存放在内存中,而外部排序是指将要排序的数据存放在外存中,并且要求内存中只能存放一定数量的数据。Java语言中常用的排序算法有冒泡排序、快速排序、选择排序、插入排序、归并排序、希尔排序等。

1.冒泡排序

冒泡排序(Bubble Sort)是一种简单的排序算法,它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序(如从大到小、首字母从A到Z)错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。

public void bubbleSort(int[] arr) {
    int temp;
    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]) {
                temp = arr[j];
                arr[j] = arr[j + 1];
                arr[j + 1] = temp;
            }
        }
    }
}

2.快速排序

快速排序(Quick Sort)是对冒泡排序的一种改进,它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比一部分的所有数据都要小,再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。

public void quickSort(int[] arr, int low, int high) {
    if (arr == null || arr.length == 0)
        return;
    if (low >= high)
        return;
    // 找寻基准数据的正确索引
    int index = partition(arr, low, high);
    // 进行迭代对index之前和之后的数组进行相同的操作使整个数组变成有序
    quickSort(arr, low, index - 1);
    quickSort(arr, index + 1, high);
}

public int partition(int[] arr, int low, int high) {
    // 指定左指针i和右指针j
    int i = low;
    int j = high;
    // 将第一个数作为基准数
    int x = arr[low];
    // 循环找比基准数大的数和比基准数小的数
    while (i < j) {
        while (arr[j] >= x && i < j) {
            j--;
        }
        // 将比基准数小的数放在前面
        if (i < j) {
            arr[i] = arr[j];
            i++;
        }
        while (arr[i] < x && i < j) {
            i++;
        }
        // 将比基准数大的数放在后面
        if (i < j) {
            arr[j] = arr[i];
            j--;
        }
    }
    // 将基准数放到中间的位置
    arr[i] = x;
    return i;
}

3.选择排序

选择排序(Selection Sort)是一种简单直观的排序算法,它的工作原理如下:在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,再从剩余未排序元素中继续寻找最小(大)元素,放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。

public 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;
            }
        }
        int temp = arr[i];
        arr[i] = arr[minIndex];
        arr[minIndex] = temp;
    }
}

4.插入排序

插入排序(

标签:

版权声明

1. 本站所有素材,仅限学习交流,仅展示部分内容,如需查看完整内容,请下载原文件。
2. 会员在本站下载的所有素材,只拥有使用权,著作权归原作者所有。
3. 所有素材,未经合法授权,请勿用于商业用途,会员不得以任何形式发布、传播、复制、转售该素材,否则一律封号处理。
4. 如果素材损害你的权益请联系客服QQ:77594475 处理。