给于给定的初始序列{88 42 75 16 90 25 98 50 36 80},回答下列问题:
(1)写出直接插入排序的各趟排序结果,并分析其算法时间复杂度
(2)写出快速排序的各趟排序结构,并分析其算法时间复杂度
(3)如何结合使用直接插入排序和快速排序两种排序算法提升排序性能
插入排序:
package T5;
public class InsertSort {
int a[];
public InsertSort() {
a = new int[]{8,19,2,3,100,99,1000,888,-1,0};
}
public InsertSort(int a[]) {
this.a = a;
}
//插入排序
public void insertSort(){
int insertNode;
int j;
System.out.println("排序中");
for(int i=1;i<a.length;i++){
insertNode = a[i];//保存插入节点到变量中
j=i-1;
System.out.println("i="+i+";insertNode="+insertNode+";j="+j);
while(j>=0 && insertNode<a[j]){
a[j+1]=a[j];
j--;
// print();
}
a[j+1]=insertNode;
// print();
}
}
public void print(){
for(int i=0;i<a.length;i++){
System.out.print(a[i]+"\t");
}
System.out.println("");
}
public static void main(String[] args) {
InsertSort sort = new InsertSort();
System.out.println("排序之前:");
sort.print();
sort.insertSort();
}
}