public class InsertSort {
public static void main(String[] args) {
int [] arr = new int[]{3,8,5,7,6,9,4,2,1};
System.out.print("排序前:");
for(int i:arr){
System.out.print(i+" ");
}
System.out.println();
insertSort(arr);
System.out.print("排序后:");
for(int i :arr){
System.out.print(i+" ");
}
}
/**
* 插入排序原理:
* 将一组数据分成两组,分别将其称为有序组与待插入组
* 每次从待插入组中取出一个元素,与有序组的元素进行比较,
* 并找到合适的位置,将该元素插到有序组当中。
* 就这样,每次插入一个元素,有序组增加,待插入组减少。直到待插入组元素个数为0。
*
* 初始状态arr[0]为有序组,所以要元素全部有序需要循环size-1次
* @param arr 待排序数组
*/
private static void insertSort(int []arr){
for(int i = 1 ; i < arr.length ; i++){
int key = arr[i];
int k = i-1;
while(k >= 0 && arr[k] > key) {
arr[k+1] = arr[k];
k--;
}
arr[k+1] = key;
}
}
}
Java版本的插入排序
最新推荐文章于 2022-08-12 15:12:20 发布