JavaScript实现排序算法
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了JavaScript实现排序算法,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2711字,纯文字阅读大概需要4分钟。
内容图文
![JavaScript实现排序算法](/upload/InfoBanner/zyjiaocheng/1168/1ad1ac7938b24d028598e98cbd32f1c4.jpg)
// 寄生构造方式实现继承 var MyArray=function(){ var arr=new Array(); // 添加值 arr.push.apply(arr,arguments);//和下面的循环一个效果// for (var i = 0; i < arguments.length; i++) {// arr.push(arguments[i]);// }// ===========================插入排序===================================== arr.insertSort=function(){ var position, current;//当前待排序的元素for (var i = 1; i < arr.length; i++) { if (arr[i]<arr[i-1]) { position=i; current=arr[i]; do{ arr[position]=arr[position-1];//移动数据 position--;//空位置,用来移动数据的 }while(position>0 && arr[position-1]>current) arr[position]=current; }else{ //当前待排序的值>=上一个已排序的值// 不用移动,直接进入下一个循环 } } }; // =======================希尔排序==============================// 是基于插入排序的变种(以下说的排序都是插入排序)// 对待排序的数组进行多次分组排序,最后在对这个数组进行整体合并排序//// 那么有两个问题:// 1、怎么分组// 这里的分组并不是真的新创建新的数组容器来将整个数组进行分组,在原数组上用一些标记来进行划分// 例如数组:[1,2,33,5,67,0,6]// 我们取下标增量imcrement=3,2,1 分别对这个数组进行3次划分,并且对这3次划分的各个数组进行一次插入排序// 增量为3:[1,5,6] [2,67] [33,0] ——排序——>[1,5,6] [2,67] [0,33]——新数组——>[1,2,0,5,67,33,6]// 增量为2:[1,0,67,6] [2,5,33] ——排序——> [1,0,6,67] [2,5,33] ——新数组——> [1,2,0,5,6,33,67]// 增量为1:[1,2,0,5,6,33,67] ——排序——> [0,1,2,5,6,33,67]//// 注:每次划分都是在排序后的新循序进行划分// 这里的排序方法和之前的插入排序稍有区别,排序的时候"移位"使用的是swap方式的数值交换,因为不能影响到其它的分组。// 2、怎么合并// 这里分组并没有把数组分割,当使用增量为1的时候就是对整个数组进行合并排序 arr.shellSort=function(){ var increment=arr.length; do{ increment= parseInt(increment/3)+1;//这里的取整很重要 for (var i = 0; i <increment; i++) { _inerSort(i,increment); } if (increment==1) {break;} }while(increment>1) }; function _inerSort(start,gap){ var tmp; for (var i = start+gap; i < arr.length; i+=gap) { if (arr[i]<arr[i-gap]) { tmp=arr[i]; arr[i]=arr[i-gap]; arr[i-gap]=tmp; } } } // ================start of 选择排序========================function _swapFun(low,high){var tmp=arr[low]; arr[low]=arr[high]; arr[high]=tmp; } function _findMax_index(low,high){ var max_index=low;//if low==high max_index=lowfor (var i = low+1; i < high+1; i++) { if (arr[max_index]<arr[i]) { max_index=i; } } return max_index; } arr.selectSort=function(){ var max_key; for (var i = arr.length-1; i >0 ; i--) { max_key=_findMax_index(0,i); _swapFun(max_key,i); } }; // ======================end of 选择排序================================//// 快速排序function _partion(low,top){ var povit=arr[low]; for (var i = low+1 ; i <top+1; i++) { if (arr[i]<povit) { var tmp=arr[i]; arr.splice(i,1);//这里直接用Array类型的splice方法删除 arr.splice(low,0,tmp)//插入povit的左侧 } } var mid=arr.indexOf(povit); return mid; } arr.quickSort=function(low,top){ if (low>=top) {console.log("low:"+low+"top:"+top+"\n");return;} var p=_partion(low,top); arguments.callee(low,p); arguments.callee(p+1,top); }; return arr; };
原文:http://www.cnblogs.com/fanglylu/p/6863547.html
内容总结
以上是互联网集市为您收集整理的JavaScript实现排序算法全部内容,希望文章能够帮你解决JavaScript实现排序算法所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。