前言
插入排序也是比较常用的
原理
对于给定的一个数组,初始时,假设第一个元素自成一个有序序列,其余元素为无序序列,接着从第二个元素开始,按照元素的大小,依次将当前处理的元素插入到之前的有序序列中,直到最后一个元素插入到有序序列中为止。
时间复杂度
平均情况:n*n
最坏情况:n*n
最好情况:n
代码
public class InsertSort { //插入排序 //对于给定的一个数组,初始时假设第一个记录自成一个有序序列,其余记录为无序序列。接着从第二个记录开始, //按照记录的大小依次将当前处理的记录插入到其之前的有序序列中,直至最后一个记录插入到有序序列中为止。 //时间复杂度 n*n 最好情况 n 平均情况n*n public static void main(String[] args) { // TODO Auto-generated method stub int[] arr={6,3,8,2,9,1}; System.out.println("排序前数组为:"); for(int num:arr){ System.out.print(num+" "); } System.out.println(); int tmp; for (int i = 1; i < arr.length; i++) { // 待插入数据 tmp = arr[i]; int j; for (j = i - 1; j >= 0; j--) { // 判断是否大于tmp,大于则后移一位 if (arr[j] > tmp) { arr[j + 1] = arr[j]; } else { break; } } arr[j + 1] = tmp; //System.out.println(i + ":" + Arrays.toString(arr)); System.out.println("第"+i+"趟排序后"); for(int num:arr){ System.out.print(num+" "); } System.out.println(); } System.out.println(); System.out.println("排序后的数组为:"); for(int num:arr){ System.out.print(num+" "); } } }
下一篇:快速排序
入口在此:点我学习快速排序