javascript实现快速排序

简述:

用到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实现快速排序_第1张图片


你可能感兴趣的:(JavaScript,list,function,正则表达式,prototype,Numbers)