private void insertSort(int[] array){
int temp, j;
for(int i = 1; i < array.length; i++){
temp = array[i];
for(j = i; j >= 1 && array[j - 1] > temp; j--){
array[j] = array[j - 1];
}
array[j] = temp;
}
}
/**
* shellSort, a kind of inserting sort
* @param array
*/
private void shellSort(int[] array){
int increment, j, temp;
for(increment = array.length / 2; increment >= 1; increment /= 2){
for(int i = 0; i < increment; i++){
for(j = i + increment; j < array.length; j += increment){
if(array[j - increment] > array[j]){
temp = array[j];
int k;
for(k = j - increment; k >=0 && array[k] > temp; k -= increment){
array[k + increment] = array[k];
}
array[k + increment] = temp;
}
}
}
}
}
/**
* mergeSort
* @param array
* @param low
* @param high
*/
private void mergeSort(int[] array, int low, int high){
int middle = (low + high) / 2;
if(low < high){
mergeSort(array, low, middle);
mergeSort(array, middle + 1, high);
merge(array, low, middle, high);
}
}
/**
*
* @param array
* @param low
* @param middle
* @param high
*/
private void merge(int[] array, int low, int middle, int high){
int[] temp = new int[high - low + 1];
int i = low;
int j = middle + 1;
int k = 0;
while(i <= middle && j <= high){
if(array[i] < array[j]){
temp[k] = array[i];
k++;
i++;
}else{
temp[k] = array[j];
k++;
j++;
}
}
while(i <= middle){
temp[k] = array[i];
k++;
i++;
}
while(j <= high){
temp[k] = array[j];
k++;
j++;
}
for(int m = 0; m < temp.length; m++){
array[low + m] = temp[m];
}
}