用Java实现插入排序算法
发布时间:2023-06-23 13:08:13
插入排序(Insertion Sort)是一种简单的排序算法,其基本思想是将待排序的元素依次插入到已排序的数列中。它的核心思想是将数组分为已排序区间和未排序区间两部分,依次将未排序区间的数插入到已排序区间中,直到未排序区间为空。插入排序的时间复杂度为O(n^2),在数据量较小的情况下具有优秀的性能,但在数据量较大的情况下不够高效。
下面是Java实现插入排序算法的代码:
public class InsertionSort {
public static void main(String[] args) {
int[] arr = {5, 7, 1, 6, 9, 2, 3, 8, 4};
insertionSort(arr);
for (int i : arr) {
System.out.print(i + " ");
}
}
public static void insertionSort(int[] arr) {
for (int i = 1; i < arr.length; i++) {
int temp = arr[i];
int j = i - 1;
while (j >= 0 && arr[j] > temp) {
arr[j + 1] = arr[j];
j--;
}
arr[j + 1] = temp;
}
}
}
代码中,我们定义了一个静态方法insertionSort(),接收一个int类型的数组作为参数,并使用for循环遍历数组,从第二个元素开始插入到前面已排序的元素中。在每次插入操作中,使用一个临时变量temp保存当前要插入的元素,用j指示当前元素所在的位置,并从当前元素的前一个位置开始往前遍历已排序的数组元素,将大于temp的元素向后移动一位,直到找到 个小于或等于temp的元素,将temp插入到该元素的后面即可。
在主函数中,我们创建了一个长度为9的int类型数组,并对其进行插入排序操作,最终输出排序后的数组元素。
总之,插入排序算法较为简单,但在数据量较大时效率较低,不建议在数据量较大的情况下使用。在实际开发中,算法的选择应该根据实际场景和数据量的大小进行权衡,以达到最优的效果。
