插入排序的代码实现虽然没有冒泡排序和选择排序那么简单粗暴,但它的原理应该是最容易理解的了,因为只要打过扑克牌的人都应该能够秒懂。插入排序是一种最简单直观的排序算法,它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。
插入排序和冒泡排序一样,也有一种优化算法,叫做拆半插入。
1. 算法步骤
将第一待排序序列第一个元素看做一个有序序列,把第二个元素到最后一个元素当成是未排序序列。
从头到尾依次扫描未排序序列,将扫描到的每个元素插入有序序列的适当位置。(如果待插入的元素与有序序列中的某个元素相等,则将待插入元素插入到相等元素的后面。)
插入排序不需要来回交换。
2.动图演示
3.代码实例
import java.util.Arrays;
import java.util.Scanner;
public class 十大排序_插入排序 {
public static void main(String[] args) {
Scanner reader = new Scanner(System.in);
int n = 5;
int a[] =new int[n];
for(int i = 0;i<n;i++) {
a[i]=reader.nextInt();
}
}
public static int[] math(int[] arry) {
//从数组里第二个数也即下标为1的数开始向前比较
for(int i = 1;i<arry.length;i++) {
//先记录下这个要插入的数据
int temp = arry[i];
//从这个数开始向前比较
int j = i;
//如果前一个数大于要插入数据,那么从前往后赋值,直到小于这个数为止,arry[j]即为给要插入数据腾出来的位置
while(j>0&&temp<arry[j-1]) {
arry[j] = arry[j-1];
j--;
}
//当执行过以上操作后如果j值变了说明需要插入数据
if(j!=i) {
arry[j]=temp;
}
}
System.out.println(Arrays.toString(arry));
return arry;
}
}