简述: 用到javascript的排序一组数字,js没有直接的数字比较的函数可以调用,所以自己写了一个快速排序 知识点: 1. 正则表达式提取正负数字的string 2. str 转数字 放回列表 3. js的对象Sort类的声明及定义 4. Sort类构造函数、成员函数定义方式(prototype) 5. 快速排序算法 代码: 复制代码 代码如下: <!DOCTYPE html> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />. <html> <title>Quick Sort</title> <head> <script type = "text/javascript"> /*************Get Number From Input***********/ function getNumList(){ var result = ""; var nums = document.getElementById('numbers').value; var reg = /([-][1-9][0-9]*)|([1-9][0-9]*)/g; var numStrList = nums.match(reg); var numList = new Array(); if(numStrList != null){ for(var i = 0;i < numStrList.length;i++){ var intNumber = parseInt(numStrList[i]); numList.push(intNumber); } } return MainProgram(numList); }; /*****************Main*************************/ function MainProgram(numList){ var sort = new Sort(numList); var sortedList = sort.getSortedList(); if(sortedList == null) document.getElementById('result').innerHTML = "WRONG INPUT"; else{ document.getElementById('result').innerHTML = sortedList.join(','); } } /**************Sort Class***********************/ var Sort = function(list){ this.resultList = list; }; Sort.prototype.Partition = function(start,end){ var baseValue = this.resultList[start]; var basePos = start; for(var j = start + 1;j <= end;j++){ if(baseValue > this.resultList[j]){ basePos++; //move the base position this.Swap(basePos,j); } } // move the base value to the correct place , before are smaller , behind are bigger this.Swap(start,basePos); return basePos; } Sort.prototype.QuickSort = function(start,end){ if(start < end){ var basePos = this.Partition(start,end); this.QuickSort(start,basePos - 1); this.QuickSort(basePos + 1, end); } }; Sort.prototype.Swap = function(pos1,pos2){ var temp = this.resultList[pos1]; this.resultList[pos1] = this.resultList[pos2]; this.resultList[pos2] = temp; } Sort.prototype.getSortedList = function(){ this.QuickSort(0,this.resultList.length - 1); return this.resultList; }; </script> </head> <body> <B> Quick Sort</B> <br> <br> <input type= "text" id = 'numbers' value = '' /> <input type = 'button' value = "exec" onclick = 'getNumList()'/> <br> <br> <B>SORTED LIST: <B> <b id = 'result'></b> </body> </html> 输出:
推荐阅读
firefox下jquery iframe刷新页面提示会导致重复之前动作
刷新页面会提示 “要显示此页面, Firefox 必须发送将会导致重复之前动作的数据(例如搜索或者下订单)”看看以下代码复制代码 代码如下:$("iframe").load(function(){ $(this).attr("src","about:blank"); }) 框>>>详细阅读
本文标题:JavaScript实现快速排序(自已编写)
地址:http://www.17bianji.com/kaifa2/JS/22799.html
1/2 1