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

Java中常用的几种排序算法及其实现函数有哪些?

发布时间:2023-06-05 04:24:49

Java中常用的几种排序算法及其实现函数主要包括冒泡排序、插入排序、快速排序、归并排序和选择排序等。

1. 冒泡排序

冒泡排序是一种基本的排序算法,其原理是重复地遍历数组,每次比较相邻两个元素的大小并交换位置,直到整个数组有序。Java中冒泡排序的实现函数如下:

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. 插入排序

插入排序也是一种简单的排序算法,其原理是依次将数组中的元素插入到有序的序列中。Java中插入排序的实现函数如下:

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

3. 快速排序

快速排序是一种高效的排序算法,其原理是选取一个基准数,将数组分为左右两部分,左边是小于基准数的数,右边是大于基准数的数,再对左右两部分递归进行快速排序。Java中快速排序的实现函数如下:

public static void quickSort(int[] arr, int left, int right){
    if(left<right){
        int i = left, j = right, pivot = arr[left];
        while(i<j){
            while(i<j && arr[j]>=pivot){
                j--;
            }
            if(i<j){
                swap(arr, i, j);
                i++;
            }
            while(i<j && arr[i]<=pivot){
                i++;
            }
            if(i<j){
                swap(arr, i, j);
                j--;
            }
        }
        arr[i] = pivot;
        quickSort(arr, left, i-1);
        quickSort(arr, i+1, right);
    }
}
public static void swap(int[] arr, int i, int j){
    int temp = arr[i];
    arr[i] = arr[j];
    arr[j] = temp;
}

4. 归并排序

归并排序是一种稳定的排序算法,其原理是将数组分成两半,对每一部分进行排序,然后对两部分进行合并。Java中归并排序的实现函数如下:

public static void mergeSort(int[] arr, int left, int right){
    if(left<right){
        int mid = (left+right)/2;
        mergeSort(arr, left, mid);
        mergeSort(arr, mid+1, right);
        merge(arr, left, mid, right);
    }
}
public static void merge(int[] arr, int left, int mid, int right){
    int[] temp = new int[right-left+1];
    int i = left, j = mid+1, k = 0;
    while(i<=mid && j<=right){
        if(arr[i]<=arr[j]){
            temp[k++] = arr[i++];
        }else{
            temp[k++] = arr[j++];
        }
    }
    while(i<=mid){
        temp[k++] = arr[i++];
    }
    while(j<=right){
        temp[k++] = arr[j++];
    }
    for(int p=0; p<temp.length; p++){
        arr[left+p] = temp[p];
    }
}

5. 选择排序

选择排序是一种简单的排序算法,其原理是每次选择未排序部分的最小值,放到已排序部分的最后。Java中选择排序的实现函数如下:

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

以上就是Java中常用的几种排序算法及其实现函数的介绍。不同的算法适用于不同的情况,需要根据具体情况选择合适的算法。