function selectionMinSort(arr){
var n = arr.length, minIndex, j, tmp;
for(var i = 0; i < n; i++){
minIndex = i;
for(j = i + 1; j < n; j++){
if(arr[j] < arr[minIndex]){
minIndex = j
}
}
tmp = arr[minIndex]
arr[minIndex] = arr[i]
arr[i]=tmp
}
}
function selectionMaxSort(arr){
var n = arr.length, maxIndex, i, j, tmp;
for(i = n - 1; i > 0; i--){
maxIndex = i;
for(j = i - 1; j > 0; j--){
if(arr[j] > arr[maxIndex]){
maxIndex = j
}
}
tmp = arr[maxIndex]
arr[maxIndex] = arr[i]
arr[i]=tmp
}
return arr
}
function insertionSort(arr){
var n = arr.length;
for(var i = 1; i < n; i++){
var key = arr[i], j = i - 1;
while(j >= 0 && arr[j] > key){
arr[j + 1] = arr[j]
j--
}
arr[j + 1] = key
}
return arr
}
function binaryInsertionSort(arr){
for(var i = 1; i < arr.length; i++){
var key = arr[i], left = 0; right = i - 1;
while(left <= right){
var mid = parseInt((left + right) / 2);
if(key < arr[mid]) {
right = mid - 1
}else {
left = mid + 1
}
}
for(j = i - 1; j >= left; j--){
arr[j + 1] = arr[j]
}
arr[left] = key
}
return arr;
}
var result = [3,44,38,5,47,15,36,26,27,2,46,4,19,50,48]
var c = new binaryInsertionSort(result)
console.log(c)
function shellSort(arr) {
var len = arr.length,
temp,
gap = 1;
console.time('希尔排序耗时:');
while(gap < len/5) {
gap =gap*5+1;
}
for (gap; gap > 0; gap = Math.floor(gap/2)) {
for (var i = gap; i < len; i++) {
temp = arr[i];
for (var j = i-gap; j >= 0 && arr[j] > temp; j-=gap) {
arr[j+gap] = arr[j];
}
arr[j+gap] = temp;
}
}
console.timeEnd('希尔排序耗时:');
return arr;
}
var arr=[3,44,38,5,47,15,36,26,27,2,46,4,19,50,48];
shellSort(arr)
console