烈55火52网(LieHuo49.Net)教85程 JavaScript 单向冒泡排序算法的实现代码,关于冒泡排序算法的实现,下面的代码中有详细的注释,如果还是看不懂,可以自己搜索一下,欢迎大家学习和研究,欢迎提出建议。 代码演示: <html> <head> <meta http-equiv="content-type" content="text/html; charset=GB2312" /> <title>单向冒泡排序</title> <style> * { font-size:12px; font-family:宋体, Arial; } /*规定了所有的字体样式*/ body { overflow:auto; } </style> <script> window.onload = function(){ var ary, st, re, timeCost, timeCost_a; //变量“timeCost”和“timeCost_a”用于记录排序用时 timeCost = timeCost_a = 0; //生成一个长度1000的随机数组 ary = create_random_array(1000); //记录开始时间 st = new Date(); //冒泡排序 re = sort(ary); //累计用时 timeCost = ((new Date())-st); ary = create_random_array(1000); st = new Date(); //优化的冒泡排序 re = sort_a(ary); timeCost_a = ((new Date())-st); //输出结果 alert("冒泡排序耗时 " + timeCost + " 毫秒\r\n优化之后耗时 " + timeCost_a + " 毫秒"); } //新建一个指定长度的数组,并对其元素赋以随机的数值 function create_random_array(len){ var re = new Array(len); for(var i=0; i<len; i++)re[i] = Math.random(); return(re); } //冒泡排序算法 function sort(ary){ var len, ex, tmp; len = ary.length; for(var i=0; i<len; i++){ //重置是否发生交换的变量 ex = false; for(var j=len-2; j>=i; j--){ if(ary[j+1]<ary[j]){ //交换相邻的两个元素 tmp = ary[j]; ary[j] = ary[j+1]; ary[j+1] = tmp; //记录发生了交换 ex = true; } } //如果没有发生交换,表明已经排序完成 if(!ex)break; } return(ary); } //改进的排序算法 function sort_a(ary){ var len, ex, tmp, first_ex_index; len = ary.length; for(var i=0; i<len; i++){ ex = false; //如果存在已保存的上一次交换位置,则自上一次交换发生的位置开始扫描 for(var j=first_ex_index?first_ex_index:(len-2); j>=i; j--){ if(ary[j+1]<ary[j]){ tmp = ary[j]; ary[j] = ary[j+1]; ary[j+1] = tmp; //如果此处第一次发生交换,则保存此位置 if(!ex)first_ex_index = j; ex = true; } } if(!ex)break; } return(ary); } </script> </head> <body> </body> </html><br /><center>如不能显示效果,请按Ctrl+F5刷新本页,更多网页代码:<a href='http://www.veryhuo.com/' target='_blank'>http://www.veryhuo.com/</a></center>提示:可修改后代码再运行! 文章导航 jQuery数字即时加减功能,网页算法应用JavaScript计算器,可实现加减乘除运算