package com.test.sort;
import java.util.Arrays;
/**
* 插入排序基本思想:{1,2,0}
* 将待排序序列逻辑的分为左有序系列和右无序序列,不断从无序序列中取出元素与有序序列中的元素依次比较
* 寻找合适位置插入
* 初始假定有序序列为arr[0],只有一个元素
*
*/
public class InsertSortDemo {
public static void main(String[] args) {
int[] arr=new int[]{0,1,2,3,7,5};
shiftInsertSort(arr);
System.out.println(Arrays.toString(arr));
}
/**
* 交换插入
* @param arr
*/
public static void exchangeInsertSort(int[] arr){
for (int i=1;i<arr.length;i++){
for (int j=i;j>0;j--){
if(arr[j]>arr[j-1]){
int insertValue=arr[j];
arr[j]=arr[j-1];
arr[j-1]=insertValue;
}
}
}
}
/**
* 移位插入
* 比交换插入少了一般交换次数
* @param arr
*/
public static void shiftInsertSort(int[] arr){
for(int i=1;i<arr.length;i++){
int insertValue=arr[i];
int index=i;
while (index>0 && insertValue>arr[index-1]){
arr[index]=arr[index-1];
index--;
}
arr[index]=insertValue;
}
}
}
排序算法-插入排序
最新推荐文章于 2024-08-09 12:03:19 发布