插入排序:
是对于预排序的元素以插入的方式找寻该元素的适当位置,以达到排序的目的
动态图解:
Java代码实现:
import java.util.Scanner;
public class Insert_sort {
//基本思想:每步将一个待排序的记录,按其顺序码大小插入到前面已经排序的序列的合适位置(从后向前找到合适的位置) 直到全部插入排序完为止
/* 插入排序
从第一个元素开始,该元素可以认为已经被排序
取下一个元素,在已经排序的元素序列中从后向前扫描
如果该元素(已排序)大于新元素,将该元素移到下一个位置
重复步骤三,直到找到已排序的元素小于或者等于新元素的位置
将新元素插入到该位置中
重复步骤2
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("请输入数组的大小:");
Scanner input = new Scanner(System.in);
int a = input.nextInt();
int [] arr = new int[a];
for(int i = 0;i<arr.length;i++) {
System.out.println("请输入数组的第"+(i+1)+"个值:");
int s = input.nextInt();
arr[i] = s;
}
arr = InsertSort(arr);
for(int i = 0;i<arr.length;i++)
System.out.print(" "+arr[i]+" ");
}
public static int[] InsertSort(int[] number) {
int size = number.length;
int temp = 0;
int j = 0;
for(int i = 1;i<size;i++) {
//先将取下的这个元素赋值给中间变量
temp = number[i];
//假如temp比前面的值小,则将前面的值往后移
for(j = i;j>0&&temp<number[j-1];j--) {
//将值往后移一个单位
number[j] = number[j-1];
}
//将这个取下的值找到合适的位置,即比前面的值大或者等于,比后面的值小
number[j] = temp;
}
return number;
}
}