八大排序算法对比
这里主要是对八大排序算法的时间复杂度进行对比,他们的java代码实现,会在后续博文中依次分享!!!
对比图如下:
一定要掌握快速排序,很重要!
直接插入排序
1. 简介
- 稳定的排序
- 时间复杂度:
最好 — O(n2)
最坏 — O(n2) - 原理图片
2. 实现代码(Java)
/**
* 插入Ri:在已经排好序的R0,R1,...R(i - 1)中寻找合适的位置插入Ri!
*/
public class Test01 {
public static void main(String[] args) {
int[] nums = new int[]{9,-8,-10,6,1};
System.out.println("原数据:" + Arrays.toString(nums));
new Test01().InsertSort(nums);
System.out.println(Arrays.toString(nums));
}
public void InsertSort(int[] nums){
for(int i = 1; i < nums.length; i++){
int current_index = i;
int current_number = nums[current_index];
while(current_index > 0 && current_number < nums[current_index - 1]){
nums[current_index] = nums[current_index - 1];
current_index--;
}
nums[current_index] = current_number;
System.out.println("第" + i +"次排序:" + Arrays.toString(nums));
}
}
}
/*
原数据:[9, -8, -10, 6, 1]
第1次排序:[-8, 9, -10, 6, 1]
第2次排序:[-10, -8, 9, 6, 1]
第3次排序:[-10, -8, 6, 9, 1]
第4次排序:[-10, -8, 1, 6, 9]
排序后的结果:[-10, -8, 1, 6, 9]
*/