JavaScript插入排序算法的原理及实现示例
本文结合实例阐述了JavaScript插入排序算法的原理和实现方法。分享给大家参考,如下:
一、插入排序介绍:
想象我们斗地主,在摸排阶段,我们手中的牌从小到大排序。如果我们每次触摸一张卡片,我们就把它插入一个合适的位置,使它小于后面位置的卡片,大于或等于前面位置的卡片。
像这样的排序方法是插入排序:
在数组a中,我们希望按升序排序,假设我们之前已经将a[0]排序为a[k],现在我们需要将a[k ^ 1]的值放在适当的位置。
(为简单起见,这里不讨论k的取值范围,但用于表示数组的某个位置)
1.首先,我们将a[k ^ 1]的值与a[k]进行比较,如果小于a[k],则交换这两个值,如果等于或大于a[k],则不交换。假设交换,现在a[k]存储a[k-1]的原值,a[k]的新值可能比之前的位置小,所以需要再次比较a[k]和a[k-1]等等。直到发现位置a[p]的值(p是0和k之间的数字)不小于位置a[p-1]的值,比较结束,位置a[k-1]的值已经放入适当的位置a[p]中。或者a[k ^ 1]的值小于之前的值,经过逐级交换,a[k ^ 1]的原值存储在a[0]中,这样就完成了。现在a[0]到a[k 1]是一个有序数组。
2.在a[k ^ 1]之后,从a[k ^ 2]到a[a.length-1]的每个元素都以相同的顺序进行运算,最终得到一个有序数组。
其次,JavaScript实现了插入排序
函数insert _ sort(arr){ var temp;for(var I=1;一、长度;I){ for(var j=I-1;j=0;j-){ if(arr[j 1]arr[j]){ temp=arr[j 1];arr[j 1]=arr[j];arr[j]=温度;} else if(arr[j 1]=arr[j]){ break;} } }返回arr}var a=[11,2,3,445,7,32,71,8,94];console . log(insert _ sort(a));var b=[94,11];console . log(insertion _ sort(b));描述:
1.一旦发现arr[j ^ 1]的值不小于前一个值,就可以结束内循环,break实现这个功能;
2.arr[j 1]用于内循环的原因:a[j](即a[i-1])表示a[i]开始时的前一个位置,进入循环后,a[j 1]表示a[i]的位置,从而实现了a[i]与a[i-1]的首次比较;随着j第一次减小,a[i-1]和a [I-2]实际上被比较了。等等。如果arr[j 1]被更改为[i],它将不起作用,因为位置没有移动。
以上代码使用了在线HTML/CSS/JavaScript代码运行工具,http://tools.jb51.net/code/HtmlJsRun测试结果如下:
PS:这里推荐一个排序的演示工具,供大家参考:
在线动画演示插入/选择/冒泡/合并/希尔/快速排序过程工具:http://tools.jb51.net/aideddesign/paixu_ys
更多对JavaScript相关内容感兴趣的读者可以查看本网站专题:《JavaScript数学运算用法总结》、《JavaScript数据结构与算法技巧总结》、《JavaScript数组操作技巧总结》、《JavaScript排序算法总结》、《JavaScript遍历算法与技巧总结》、《JavaScript查找算法技巧总结》、《JavaScript错误与调试技巧总结》和0103010
希望本文对JavaScript编程有所帮助。
版权声明:JavaScript插入排序算法的原理及实现示例是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。