vlambda博客
学习文章列表

java数组插入排序



 本次内容主要是讲解java插入排序算法



    之前有讲到冒泡排序,今天咱们就来说说插入排序,其实代码写法跟冒泡排序极其相似(外层循环轮数,内层循环比较次数,通过嵌套循环实现排序),不同的是插入排序减少了交换次数,冒泡排序是每次与比较值做比较后如果满足条件(大于或小于)就做数据交换,而插入排序是事先记录要插入的初始值,然后从选择值往前面做对比,如果选择值小与等于前面的值就把前面的数值赋给后一位(往后移动一位),遇到比选择值小的则停止对比,将选择值移动到最后一个大于选择值的位置,排序逻辑可以根据自己的需求来更改,比如升序降序等等。





01


插入排序图解







02



代码实现


public static void main(String[] args) { //排序数组 int[] arr = {9,7,8,2,5,1,3,6,4}; //选择数据 int select = 0; //数组长度 int arrLen = arr.length; //选择从第二个数字开始 for (int i = 1; i < arrLen; i++) { //暂存选择值 select = arr[i]; //标记替最后一个大于选择值的下标 int j = 0; /*从选择值往前面做对比,如果选择值小与前面的值就把前面的数值赋给后一位, 遇到比选择值小的则停止对比*/ for (j = i; j > 0 && select <= arr[j-1]; j--) { arr[j] = arr[j-1]; } //将选择值赋给比选择值小的后一位 arr[j] = select; System.out.print("第"+i+"轮排序后:"); for (int item : arr) { System.out.print(item); } System.out.println("");//换行 } //排序后 System.out.print("排序后:"); for (int item : arr) { System.out.print(item); } }

以下是程序执行后结果:

第1轮排序后:798251364

第2轮排序后:789251364

第3轮排序后:278951364

第4轮排序后:257891364

第5轮排序后:125789364

第6轮排序后:123578964

第7轮排序后:123567894

第8轮排序后:123456789

排序后:123456789