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

用Java函数实现数据插入排序:插入排序算法

发布时间:2023-07-18 20:19:13

插入排序是一种简单直观的排序算法,它的运行时间是O(n2)。它的基本思想是将一个待排序的数据序列分成已排序和未排序两部分,每次从未排序的部分取出一个数据,插入到已排序部分的合适位置,直到所有数据都有序为止。

下面是用Java函数实现插入排序的代码:

public class InsertionSort {
    public static void insertionSort(int[] arr) {
        int n = arr.length;
        
        for (int i = 1; i < n; i++) {
            int key = arr[i];
            int j = i - 1;
            
            // 将比key大的元素都向后移动一位
            while (j >= 0 && arr[j] > key) {
                arr[j + 1] = arr[j];
                j--;
            }
            
            // 将key插入到正确的位置
            arr[j + 1] = key;
        }
    }
    
    public static void main(String[] args) {
        int[] arr = {5, 2, 6, 1, 3, 4};
        
        System.out.println("排序前的数组:");
        printArray(arr);
        
        insertionSort(arr);
        
        System.out.println("排序后的数组:");
        printArray(arr);
    }
    
    public static void printArray(int[] arr) {
        for (int num : arr) {
            System.out.print(num + " ");
        }
        System.out.println();
    }
}

运行结果:

排序前的数组:
5 2 6 1 3 4 
排序后的数组:
1 2 3 4 5 6 

以上代码是一个简单的插入排序实现。在主函数中,我们定义了一个待排序的整型数组arr,并且调用insertionSort方法对其进行排序。insertionSort方法通过两个嵌套的循环实现插入排序的核心功能。在每一次外层循环中,选取未排序序列中的 个元素(key),然后将其与已排序序列中的元素依次进行比较,如果已排序序列中的元素大于key,则将其向后移动一位,直到找到key应该插入的位置,将key插入到该位置上。

最后,我们通过调用printArray方法打印排序前和排序后的数组。