Class1主要讲了简单的两个复杂度分析,主要分析了插入排序和归并排序。以下为插入排序的代码实现。
package Class_1;
public class Insert_Sort {
//Insert_sort
public static int[] In_sort(int[] A){
for(int i = 1; i < A.length; i ++){
for(int j = i; j > 0; j --) {
if (A[j] < A[j - 1]) {
swap(A,j,j-1);
}
}
}
return A;
}
public static int[] In_sort2(int[] A){
int cur_temp;
for(int i = 1; i < A.length; i ++){
cur_temp = A[i];
int j = i - 1;
while (j >= 0 && cur_temp < A[j]){
A[j + 1] = A[j];
j --;
}
A[j + 1] = cur_temp;
}
return A;
}
/* 按值交换无法交换,经典错误
private static void swap(int i, int j) {
int k;
k = i;
i = j;
j = k;
}
*/
//数组类型的交换
private static void swap(int[] A, int index1, int index2){
//暂存工具人
int temp;
temp = A[index1];
A[index1] = A[index2];
A[index2] = temp;
}
public static void main(String[] args){
int[] A = {10,9,6,8,11,16,17,5,1};
/*
In_sort(A);
for (int i : A) {
System.out.print(i+",");
}
*/
In_sort2(A);
for (int i : A) {
System.out.print(i+",");
}
}
}