看了MIT的算法導論視頻,覺得很不錯,就用JAVA把視頻裏的算法寫了出來。
插入排序
private void insertSort(int[] a){
int now,tmp;
for(int i = 1;i < a.length; ++i){
now = i;
tmp=a[i];
for(int j=i-1;j>-1; --j){
if(tmp<a[j]){
a[now]=a[j];
--now;
}else {
break;
}
}
a[now]=tmp;
}
}
歸併排序
private void mergeSort(int[] a){
if(a.length==1){
return;
}else{
int i = 0;
int[] b = new int[a.length/2],c = new int[a.length-a.length/2];
for(int j = 0;i<a.length/2;++i,++j){
b[j] = a[i];
}
for(int j=0;i<a.length;++i,++j){
c[j] = a[i];
}
mergeSort(b);
mergeSort(c);
int k = 0, l = 0;
i=0;
do{
if(k==b.length){
a[i] = c[l];
++i;
++l;
}else if(l==c.length){
a[i] = b[k];
++i;
++k;
}else if(b[k]<c[l]){
a[i] = b[k];
++i;
++k;
}else{
a[i] = c[l];
++i;
++l;
}
} while(i<a.length);
}
}