java插入排序的算法
一,插入排序法介绍
- 插入式排序属于内部排序法,是对于欲排序的元素以插入的方式找寻该元素的 适当位置,以达到排序的目的。
二,插入排序的基本思想
- 把n个待排序的元素看成为 一个有序表和一个无序表,开始时有序表中只包含一个元素,无序表中包含有n-1个元素,排序过程中每次从无序表中取出第一个元素,把它的排序码依次与有序表元素的排序码进行比较,将它插入到有序表中的适当位置,使之成为新的有序表。
- 举个例子:int[] arr = {17,3,25,14,20,9};
代码实现:
import java.util.Arrays;
public class huashanzhizai {
public static void main(String[] args) {
huashanzhizai kim = new huashanzhizai();
kim.InsertSort();
}
public void InsertSort(){
int[] arr = new int[]{17,3,25,14,20,9};
System.out.println("原始数组:");
System.out.println(Arrays.toString(arr));
for(int i = 1;i < arr.length;i++){
int insertVal = arr[i];//定义待插入的数
int insertIndex = i-1;
//insertIndex >= 0保证插入位置不越界
//insertVal < arr[insertIndex]寻找不满足排序的元素
while (insertIndex >= 0 && insertVal < arr[insertIndex]){
arr[insertIndex+1] = arr[insertIndex];//如果找到,就将元素往后移动一位
insertIndex--;
}
//退出while循环则说明插入位置已经找到
if(insertIndex+1 != i){
arr[insertIndex+1] = insertVal;
//如果插入位置元素与之前元素值不相同,则插入。目的是提高排序的效率
}
System.out.println("第"+i+"次排序后:");
System.out.println(Arrays.toString(arr));
}
}
}
运行结果:
原始数组:
[17, 3, 25, 14, 20, 9]
第1次排序后:
[3, 17, 25, 14, 20, 9]
第2次排序后:
[3, 17, 25, 14, 20, 9]
第3次排序后:
[3, 14, 17, 25, 20, 9]
第4次排序后:
[3, 14, 17, 20, 25, 9]
第5次排序后:
[3, 9, 14, 17, 20, 25]
三,原理分析
见上代码!!!