1. 希尔排序:1959年Shell发明,第一个突破O(n^2)的排序算法,是简单插入排序的改进版。它与插入排序的不同之处在于,它会优先比较距离较远的元素。希尔排序又叫缩小增量排序。
2. 希尔排序的时间,空间复杂度及稳定性:
1>. 时间复杂度:O(n^1.3);虽然我们这里希尔排序的过程中会出现了三层循环的嵌套,但是通过某些算法最后计算得出希尔排序的时间复杂度为O(n^1.3)。
2>. 空间复杂度:S(1);因为我们在希尔排序时是对原数组进行直接排序,并没有其他创建新的数组。
3>. 稳定性: 不稳定;因为我们在希尔排序时,出现了大跨度的交换元素。
3. 我们可以创建一个父类:父类中封装数组的创建,排序,交换位置等方法,其他的排序方法的类都继承于这个父类,重写父类中的方法。
public abstract class Sort {
public int[] arr;
public Sort(){};
//有参构造方法 创建一个数组的副本
public Sort(int[] arr){
this.