【思维】javascript选择排序
2010-01-18 09:39 BlueDream 阅读(515) 评论(0) 编辑 收藏 举报上篇写了冒泡排序.冒泡排序算法复杂度为O(n^2).本篇在冒泡排序的基础上进行了一点精进.那就是选择排序.
选择排序与冒泡排序的区别就是:不需要像冒泡排序那样每次都交换元素.选择排序法的第一层循环从起始元素开始选到倒数第二个元素,主要是在每次进入的第二层循环之前,将外层循环的下标赋值给临时变量,接下来的第二层循环中,如果发现有比这个最小位置处的元素更小的元素,则将那个更小的元素的下标赋给临时变量,最后,在二层循环退出后,如果临时变量改变,则说明,有比当前外层循环位置更小的元素,需要将这两个元素交换.
这样选择排序的每个最小值的筛选.只需要一次元素的交换.
代码:
<script type="text/javascript"> function swap(items, firstIndex, secondIndex) { var temp = items[firstIndex]; items[firstIndex] = items[secondIndex]; items[secondIndex] = temp; } function selectionSort(items) { var len = items.length, min; for(var i = 0; i < len; i++) { min = i; for(var j = i + 1; j < len; j++) { if(items[j] < items[min]) { min = j; } } if(i != min) { swap(items, i, min); } } return items; } document.write(selectionSort([1,3,8,4,5,3,2])); </script>
结果:
1,2,3,3,4,5,8