Posted in Javascript onDecember 19, 2012
简述:
用到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>
输出:
JavaScript实现快速排序(自已编写)
声明:登载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述。
Reply on: @reply_date@
@reply_contents@