package com.fpy;
import java.util.Arrays;
/**
* 插入排序
* ①. 从第一个元素开始,该元素可以认为已经被排序
* ②. 取出【下一个元素】,在已经排序的元素序列中从后向前扫描
* ③. 如果该元素(已排序)大于新元素,将该元素移到下一位置
* ④. 重复步骤3,直到找到已排序的元素小于或者等于新元素的位置
* ⑤. 将新元素插入到该位置后
* ⑥. 重复步骤②~⑤
*/
public class InsertSort {
public static void main(String[] args) {
//5 4 3 2 1
int[] arr = new int[5];
//给数组填充数据
createData(arr);
System.out.println("排序前:\t" + Arrays.toString(arr));
for (int i = 1; i < arr.length; i++) {
//要参与比较的值
int ele = arr[i];
int index = i -1;//i 和相邻的数进行比较的下标
//从小到大排序
while(index >=0 && arr[index]>ele){
// 当左边的值 大于要比较的值交换位置
arr[index+1] = arr[index];
//和前面的值继续比较
index--;
}
//将比较的值放入此次最小的位置
arr[index+1] = ele;
}
System.out.println("排序后:\t" + Arrays.toString(arr));
}
private static void createData(int[] arr) {
for (int i = 0; i < arr.length; i++) {
arr[i] = (int) (Math.random() * 20 + 1);
}
}
}
插入排序
原创
©著作权归作者所有:来自51CTO博客作者芬月川川的原创作品,请联系作者获取转载授权,否则将追究法律责任
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
排序算法之计数排序的优化
排序算法之计数排序的优化
数组 计数排序 最小值 -
直接插入排序、折半插入排序、shell插入排序
直接插入排序: 折半插入排序: shell插入排序:
插入排序 折半插入排序 直接插入排序 其他