七大排序算法之插入排序
前言
插入排序也是比较常用的
原理
对于给定的一个数组,初始时,假设第一个元素自成一个有序序列,其余元素为无序序列,接着从第二个元素开始,按照元素的大小,依次将当前处理的元素插入到之前的有序序列中,直到最后一个元素插入到有序序列中为止。
时间复杂度
平均情况: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+" ");
}
}
}
下一篇:快速排序
入口在此:
快速排序
https://blog.csdn.net/hq942845204/article/details/80156943