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

利用Java函数实现数组的排序

发布时间:2023-06-24 16:33:21

数组是Java编程中非常常见的数据结构,它可以存储多个相同类型的数据元素。在实际使用过程中,经常需要将数组元素按照特定的顺序排列,在排序过程中,会用到Java中的各种排序算法,比如冒泡排序、插入排序、选择排序、希尔排序、快速排序等。

1.冒泡排序

冒泡排序是一种简单的排序算法,其基本思想是两两比较相邻的元素,如果顺序错误就交换位置。这个过程类似于水泡从下往上冒出来的过程,因此得名冒泡排序。

Java代码实现如下:

public static void bubbleSort(int[] arr) {
    int len = arr.length;
    for(int i = 0; i < len-1; i++) {
        for(int j = 0; j < len-1-i; 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 insertionSort(int[] arr) {
    int len = arr.length;
    for (int i = 1; i < len; i++) {
        int temp = arr[i];
        int j;
        for (j = i - 1; j >= 0 && arr[j] > temp; j--) {
            arr[j+1] = arr[j];
        }
        arr[j+1] = temp;
    }
}

3.选择排序

选择排序是一种简单的排序算法,其基本思想是将未排序的元素中最小(或最大)的元素找到,放置到已排序的序列末尾,直到所有的元素都排好序为止。

Java代码实现如下:

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

4.希尔排序

希尔排序是一种插入排序的变种,其基本思想是将待排序的数组分成若干个子序列进行插入排序,最终将子序列合并为一个序列,即得到完整的排序结果。

Java代码实现如下:

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

5.快速排序

快速排序是一种分治的排序算法,其基本思想是选定一个基准元素,将待排序的序列分成左右两部分,左边的元素小于等于基准元素,右边的元素大于等于基准元素。递归的对左右两部分进行快速排序,直到所有的元素都排好序。

Java代码实现如下:

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

总之,在Java中实现数组的排序,可以根据实际需求选择不同的排序算法,其中冒泡排序、插入排序、选择排序、希尔排序和快速排序是较为常用的排序算法,根据实际场景的不同,可以灵活选择相应的算法进行实现,在这些算法的基础上,也可以进行一些优化和改进,以提高排序效率和稳定性。