简述:
用到javascript的排序一组数字,js没有直接的数字比较的函数可以调用,所以自己写了一个快速排序
知识点:
1. 正则表达式提取正负数字的string
2. str 转数字 放回列表
3. js的对象sort类的声明及定义
4. sort类构造函数、成员函数定义方式(prototype)
5. 快速排序算法
代码:
.
<script type="text/javascript"> <br>/*************Get Number From Input***********/ <br>function getNumList(){ <br>var result = ""; <br>var nums = document.getElementById('numbers').value; <br>var reg = /([-][1-9][0-9]*)|([1-9][0-9]*)/g; <br>var numStrList = nums.match(reg); <br>var numList = new Array(); <br>if(numStrList != null){ <br>for(var i = 0;i < numStrList.length;i++){ <br>var intNumber = parseInt(numStrList[i]); <br>numList.push(intNumber); <br>} <br>} <br>return MainProgram(numList); <br>}; <br><br>/*****************Main*************************/ <br>function MainProgram(numList){ <br>var sort = new Sort(numList); <br>var sortedList = sort.getSortedList(); <br>if(sortedList == null) <br>document.getElementById('result').innerHTML = "WRONG INPUT"; <br>else{ <br>document.getElementById('result').innerHTML = sortedList.join(','); <br>} <br>} <br><br>/**************Sort Class***********************/ <br>var Sort = function(list){ <br>this.resultList = list; <br>}; <br><br>Sort.prototype.Partition = function(start,end){ <br>var baseValue = this.resultList[start]; <br>var basePos = start; <br>for(var j = start + 1;j <= end;j++){ <br>if(baseValue > this.resultList[j]){ <br>basePos++; //move the base position <br>this.Swap(basePos,j); <br>} <br>} <br>// move the base value to the correct place , before are smaller , behind are bigger <br>this.Swap(start,basePos); <br>return basePos; <br>} <br><br>Sort.prototype.QuickSort = function(start,end){ <br>if(start < end){ <br>var basePos = this.Partition(start,end); <br>this.QuickSort(start,basePos - 1); <br>this.QuickSort(basePos + 1, end); <br>} <br>}; <br><br>Sort.prototype.Swap = function(pos1,pos2){ <br>var temp = this.resultList[pos1]; <br>this.resultList[pos1] = this.resultList[pos2]; <br>this.resultList[pos2] = temp; <br>} <br><br>Sort.prototype.getSortedList = function(){ <br>this.QuickSort(0,this.resultList.length - 1); <br>return this.resultList; <br>}; <br><br></script>
Quick Sort
SORTED LIST:
输出: 











