【思维】javascript冒泡排序
2010-01-14 11:28 BlueDream 阅读(511) 评论(0) 编辑 收藏 举报学这些的目的就是为了锻炼逻辑思维.也许像冒泡排序这种低效的排序.很少能使用得到. 但高级算法也都是在这些简单算法的积累上产生的.
下面就介绍下冒泡排序的原理:
冒泡排序算法的运作如下
- 比较相邻的元素。如果第一个比第二个大,就交换他们两个。
- 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。
- 针对所有的元素重复以上的步骤,除了最后一个(体现在程序中.就是用外层循环的 i 的增加.使stop = len - i 不断减小.)。
- 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
代码:
function swap(items, firstIndex, secondIndex) { var temp = items[firstIndex]; items[firstIndex] = items[secondIndex]; items[secondIndex] = temp; } function bubbleSort(items) { var len = items.length; if(len <= 0) return false; for(var i = 0; i < len; i++) { for(var j = 0, stop = len - i; j < stop; j++) { if(items[j] > items[j + 1]) { swap(items, j, j + 1); } } } return items; } document.write(bubbleSort([1,3,8,4,5,3,2]) + '<br/>');
结果为:
1,2,3,3,4,5,8
也可以反序进行比较.然后将两个元素中小的排到最首位.
代码:
function bubbleSort(items) { var len = items.length; for(var i = len - 1; i >= 0; i--) { for(var j = len - i; j >= 0; j--) { alert(j) if(items[j] < items[j - 1]) { swap(items, j, j - 1); } } } return items; }
效果都是一样的.