欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

数组直接插入排序

程序员文章站 2022-03-10 21:44:44
...

插入排序:后一项与前一项的比较,把后一项作为比较项临时保存起来,当前一项大于比较项时,前一项往后移,

而比较项继续和前一项进行比较,直到前一项小于比较项时,把比较项插入到当前项的后一项中,覆盖原来的值。

/**
  原数组:[1,35,54,3,6,4,7]
  拷贝一份原数组:[1,35,54,3,6,4,7]  i:后一项(比较项)  j:前一项

  第一轮
  i=1,j=0   1  < 35  [1,35,54,3,6,4,7] 

  第二轮
  i=2,j=1   35 < 54  [1,35,54,3,6,4,7] 

  第三轮
  i=3,j=2   54 > 3   [1,35,54,54,6,4,7] 
	  j=1   35 > 3   [1,35,35,54,6,4,7]
	  j=0   1  < 3   [1,3,35,54,6,4,7]

  第四轮
  i=4,j=3   54 > 6   [1,3,35,54,54,4,7]
	  j=2   35 > 6   [1,3,35,35,54,4,7] 
	  j=1   3  < 6   [1,3,6,35,54,4,7] 
  
  第五轮
  i=5,j=4   54 > 4   [1,3,6,35,54,54,7] 
	  j=3   35 > 4   [1,3,6,35,35,54,7]
	  j=2   6  > 4   [1,3,6,6,35,54,7] 
	  j=1   3  < 4   [1,3,4,6,35,54,7] 

  第六轮
  i=6,j=5   54 > 7   [1,3,4,6,35,54,54]
	  j=4   35 > 7   [1,3,4,6,35,35,54]
	  j=3   6  < 7   [1,3,4,6,7,35,54]

  直接插入排序至少需要array.length-1轮
*/
<script>
// 升序排序
function sort(array) {
  var len = array.length,
	i, j, tmp, result;
  result = array.slice(0);
  for (i = 1; i < len; i++) {
	tmp = result[i];
	j = i - 1;
	// result[j] < tmp时,则为降序排序
	while (j >= 0 && result[j] > tmp) {
	  result[j + 1] = result[j];
	  j--;
	}
	result[j + 1] = tmp;
  }
  return result;
}
</script>

 

相关标签: Array