一、基本思路
每一轮将一个待排序的元素,依次和已经排好序的序列进行比较,然后插入到适当位置,直到全部插入完成为止。
二、算法实现
外层循环控制轮数,因为下标为0的元素,只有一个元素,相当于有序的,所以从下标为1的元素开始 ,到最后一个下标为数组长度减1的元素结束。
内层控制插入,从后往前依次和待插入元素进行比较,若比待插入元素大,下标后移,把待插入元素插入进来。
三、简单代码实现
package cn.xcx.blog;
/**
* @author 作者 : X-LEFT
* @version 创建时间:2019年11月15日 下午11:14:36
*/
public class InsertSort {
public static void main(String[] args) {
int[] a = { 2, 5, 4, 1, 3 };
System.out.println("原数组为:");
for (int i = 0; i < a.length; i++) {
System.out.print(a[i] + " ");
}
// 调用选择排序方法
insertSort(a);
System.out.println();// 换行
System.out.println("选择排序后的数组为:");
for (int i = 0; i < a.length; i++) {
System.out.print(a[i] + " ");
}
}
private static void insertSort(int[] a) {
int i;
int j;
int temp;
for (i = 1; i < a.length; i++) {
if (a[i] < a[i - 1]) {
temp = a[i];
for (j = i - 1; j >= 0 && a[j] > temp; j--) {
a[j + 1] = a[j];
}
a[j + 1] = temp;
}
}
}
}