Java中的插入排序(Insertion Sort)是一种简单的排序算法,其基本思想是将数组分为已排序和未排序两部分,每次从未排序部分取出一个元素,插入到已排序部分的适当位置,以此方式将整个数组排序。
以下是一个使用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; while (j >= 0 && arr[j] > key) { arr[j + 1] = arr[j]; j--; } arr[j + 1] = key; } } public static void main(String[] args) { int[] arr = {3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5}; insertionSort(arr); System.out.println(Arrays.toString(arr)); } }
在上面的代码中,insertionSort方法接受一个整数数组作为参数,使用嵌套的for循环来实现插入排序。外部循环迭代数组的第二个元素到最后一个元素,内部循环将当前元素与已排序部分中的元素进行比较,并在适当位置插入当前元素。最终,整个数组将被排序并输出。
insertionSort
插入排序的时间复杂度为O(n^2),其中n是数组的大小。在最坏的情况下,即数组已经按相反的顺序排列,插入排序需要进行n(n-1)/2次比较和n(n-1)/2次移动。尽管插入排序的时间复杂度较高,但它可以在某些情况下比其他排序算法表现更好,例如在数组已经基本有序的情况下。此外,它的实现简单,容易理解,因此可以作为其他排序算法的基础。
插入排序还有一些优点和缺点:
优点:
缺点:
总的来说,插入排序是一种简单、稳定、适用于小型数据集的排序算法。它可能不是最快的排序算法,但是它容易实现,并且在某些情况下可能比其他算法表现更好。
原文链接:codingdict.net