大家可以关注一下专栏,方便大家需要的时候直接查找,专栏将持续更新~
题目描述
编写一个Java程序,实现插入排序算法。程序需要能够接收一个整型数组作为输入,并输出排序后的数组。
插入排序是一种简单直观的排序算法,它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。插入排序在实现上,通常采用in-place排序(即只需用到O(1)的额外空间的排序)。
解题思路
插入排序的基本思想是:每步将一个待排序的记录按其关键字的大小插入到前面已经排序的序列中的适当位置,直到全部插入排序完为止。具体步骤如下:
- 从第一个元素开始,该元素可以认为已经被排序。
- 取出下一个元素,在已经排序的元素序列中从后向前扫描。
- 如果该元素(已排序)大于新元素,将该元素移到下一位置。
- 重复步骤3,直到找到已排序的元素小于或者等于新元素的位置。
- 将新元素插入到该位置后。
- 重复步骤2~5。
源码答案
public class InsertionSort {
public static void main(String[] args) {
int[] array = {12, 11, 13, 5, 6}; // 测试数组
insertionSort(array);
for (int i : array) {
System.out.print(i + " ");
}
}
public static void insertionSort(int[] array) {
int n = array.length;
for (int i = 1; i < n; ++i) {
int key = array[i];
int j = i - 1;
// 将array[i]与已排序好的array[0...i-1]中的元素进行比较,找到插入位置
while (j >= 0 && array[j] > key) {
array[j + 1] = array[j];
j = j - 1;
}
array[j + 1] = key;
}
}
}
输出结果
程序运行后,输出应为:5 6 11 12 13,这是对输入数组进行插入排序后的结果。
AI时代的游轮已经到来
如果你觉得开发过程中存在重复性工作,效率不够高。
不妨看看影子的AI+编程玩法,助力每一位编程人员提高效率,无论你是在校学生或是工作者,都应为未来的AIG时代做准备。
AI编程学习资料https://blog.youkuaiyun.com/yingzix688/article/details/137894050