排序算法之插入排序。插入排序就是从未排序的数组中,选择第一个,然后插入到已排序好的数组中;默认第一个是已排好序的数组,从第2个数到结尾所有的数都属于未排序数组;代码如下;
package com.example.demo.sort;
/**
* 插入排序;将数组分为已排序和未排序两部分;默认第一个数是已排序数组;其余的都未未排序部分
* 故从第2个数开始,循环插入到有序的数组,主要是找到待插入数,在已排序中的下标是多少
*/
public class SortInsertDemo2 {
public static void main(String[] args) {
//待排序数组
int[] arry = {2,5,9,18,6,4};
//因为默认从第2的数开始为未排序部分,故i从1开始循环;
//因为需要循环到数组的最后一个数,故i<arry.length.而不是i<arry.length-1;(交换排序,循环的话是:i<arry.length-1,因为i需要与下一个元素比较,如果到最后一个元素,会数组越界)
for(int i=1;i<arry.length;i++){
//获取待插入的数(即待排序部分的第一个数)
int current = arry[i];
//待插入数的前一个数的下标
int index = i-1;
//通过while找到待插入数,该插入的数组下标数,从有序数组的最后一个开始比较;
while(current<arry[index]){
//如果与前一个数比较,待插入数小。将有序数组的数,向后移动一个下标;
arry[index+1]=arry[index];
--index;
}
//将待插入数,插入正确的数组位置;
arry[index+1] = current;
}
//循环打印出排序后的数组
for(int i=0;i<arry.length;i++){
System.out.println(arry[i]);
}
}
}