今天开始重新研究MIT OCW Introduction to algorithms;重新思考了一遍插入排序算法,用java代码实现了一下:
package org.algorithms;
/**
* a implementation of insertion sort according MIT OCW presedo code
* as follows:
* Insertion-Sort(A,n) <--A[0...n-1]
*
* for j=1 to n-1
* do key = A[j];
* i = j-1;
* while(i>=0&&A[i]>key)
* do A[i+1] = A[i];
* i--;
* A[i+1] = key;
*
* @author weich
* 2007-8-30
*/
public class InsertionSort {
public static int[] InsertionSort(int[] a){
if(a == null) return new int[0];
int len = a.length;
for(int j=1;j<len;j++){
int key = a[j];
int i=j-1;
while(i>=0&&a[i]>key){
a[i+1] = a[i];
i--;
}
a[i+1]=key;
}
return a;
}
public static void main(String[] args) {
int[] b = {19,8,27,6,34,6,45,4,3,99,1,20,7};
b=InsertionSort(b);
int no = 0;
for(int i : b){
System.out.println((no++)+" : "+ i);
}
}
}
package org.algorithms;
/**
* a implementation of insertion sort according MIT OCW presedo code
* as follows:
* Insertion-Sort(A,n) <--A[0...n-1]
*
* for j=1 to n-1
* do key = A[j];
* i = j-1;
* while(i>=0&&A[i]>key)
* do A[i+1] = A[i];
* i--;
* A[i+1] = key;
*
* @author weich
* 2007-8-30
*/
public class InsertionSort {
public static int[] InsertionSort(int[] a){
if(a == null) return new int[0];
int len = a.length;
for(int j=1;j<len;j++){
int key = a[j];
int i=j-1;
while(i>=0&&a[i]>key){
a[i+1] = a[i];
i--;
}
a[i+1]=key;
}
return a;
}
public static void main(String[] args) {
int[] b = {19,8,27,6,34,6,45,4,3,99,1,20,7};
b=InsertionSort(b);
int no = 0;
for(int i : b){
System.out.println((no++)+" : "+ i);
}
}
}