前言:
我们打扑克牌时,常常要理牌,理牌的时候,我们用的排序算法就是插入排序
所以说,我们日常生活中,经常使用插入排序
下面就让我们分析一下插入排序算法
一、插入排序的基本思想:
把n个待排序的元素看成一个有序表和一个无序表 开始时有序表只包含一个元素,无序表中包含n-1个元素 排序过程中每次从无序表中取出第一个元素,把它的排序码 依次与有序表元素的排序码进行比较,将它插入到有序表中的 适当位置,使之成为新的有序表
二、插入排序的代码实现:
public static void InsertSort(int arr[]){
for (int i = 1; i < arr.length; i++) {
//定义要插入的数
int insertVal=arr[i];
int insertIndex=i-1;//即arr[i]前一个数的下标
//给insertVal 找到插入的位置
//说明
//1、insertIndex>=0保证在给insertVal找插入位置,不越界
//2、insertVal<arr[insertIndex]待插入的数,还没有找到插入位置
//3、就需要将arr[insertIndex]后移
while(insertIndex>=0&&insertVal<arr[insertIndex]){
arr[insertIndex+1]=arr[insertIndex];
insertIndex--;
}
//当退出while循环时,说明插入的位置找到,insertIndex+1
if(insertIndex+1!=i){
arr[insertIndex+1]=insertVal;
}
}
}
三、插入排序的优缺点:
1)优点:稳定,快
2)缺点:比较次数不一定,比较次数越少,插入点后的数据移动越多,特别是当数据总量庞大的时候