JavaScript的排序算法——插入排序

插入排序(Insertion Sort)

插入排序是一种简单的排序算法,这种算法可以一次构建最终排序的数组(或数列)。它在大型数列上的排序效率会远低于一些更高级的排序算法,如快速排序、堆排序、归并排序。

中心思想:通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。

JavaScript的排序算法——插入排序_第1张图片

JavaScript的排序算法——插入排序_第2张图片

编码实现:

function insertionSort(arr){
	var newArr = arr;
	for(let i=1;itemp && j>=0){
			newArr[j+1] = newArr[j];
			j--;
		}
		newArr[j+1] = temp;
	}
	return newArr;
}

二分插入排序

插入排序的一种优化实现, 通过二分法减少遍历时间。

JavaScript的排序算法——插入排序_第3张图片

// 先在有序区通过二分查找的方法找到移动元素的起始位置,
// 然后通过这个起始位置将后面所有的元素后移
function sort2(array) {
  var len = array.length,
      i, j, tmp, low, high, mid, result;
  // 赋予数组副本
  result = array.slice(0);
  for(i = 1; i < len; i++){
    tmp = result[i];
    low = 0;
    high = i - 1;
    while(low <= high){
      mid = parseInt((low + high)/2, 10);
      if(tmp < result[mid]) high = mid - 1;
      else low = mid + 1;
    }
    for(j = i - 1; j >= high+1; j--){
      result[j+1] = result[j];            
    }
    result[j+1] = tmp;
  }
  return result;
}

相关阅读

JavaScript的排序算法——冒泡排序
JavaScript的排序算法——选择排序
JavaScript的排序算法——插入排序
JavaScript的排序算法——归并排序
JavaScript的排序算法——快速排序

你可能感兴趣的:(JavaScript,JS排序算法,插入排序)