![]() |
#2
寒风中的细雨2012-09-28 22:22
|
代码:(保存为html文件即可运行)

<html>
<!--
几种排序算法的JavaScript实现
author:linyang
测试数据:48,37,64,96,75,12,26,48,54,03
-->
<head>
<script type="text/javascript">
/*需要升序排序的整型数组*/
var array_to_sort;
function printArray(array){
alert("当前该整型数组顺序为:" + array.join(','));
}
/*插入排序*/
function insertSort(){
array_to_sort = document.getElementById('arrayToSort').value.split(',');
var n = array_to_sort.length/1;
for(var i=1; i<n; i++){
for(var j=i; j>0; j--){
if(array_to_sort[j]/1<array_to_sort[j-1]/1){
var tmp = array_to_sort[j-1];
array_to_sort[j-1] = array_to_sort[j];
array_to_sort[j] = tmp;
}else
break;
}
}
printArray(array_to_sort);
}
/*冒泡排序*/
function bubbleSort(){
array_to_sort = document.getElementById('arrayToSort').value.split(',');
for(var i=1; i<array_to_sort.length/1; i++){
for(var j=0; j<array_to_sort.length/1-i; j++){
if(array_to_sort[j]/1>array_to_sort[j+1]/1){
var tmp = array_to_sort[j];
array_to_sort[j] = array_to_sort[j+1];
array_to_sort[j+1] = tmp;
}
}
}
printArray(array_to_sort);
}
/*希尔排序*/
function shellSort(){
array_to_sort = document.getElementById('arrayToSort').value.split(',');
var delta = new Array();
var k = array_to_sort.length/1;
while((k= Math.floor(k/2))>0){
//k = Math.floor(k/2);
delta.push(k);
}
for(var i=0; i<delta.length; i++){
var dk = delta[i];
for(var k=delta[i]; k<array_to_sort.length/1;++k)
if(array_to_sort[k]/1<array_to_sort[k-dk]/1){
var t = array_to_sort[k];
for(var j=k-dk;j>=0&&t<array_to_sort[j];j-=dk)
array_to_sort[j+dk] = array_to_sort[j];
array_to_sort[j+dk] = t;
}
}
printArray(array_to_sort);
}
/*快速排序*/
function quickSort(){
var _quick_sort_ = function(array,low,high){
var pivot,i,j;
if(low<high){
pivot = array_to_sort[low]; i=low; j=high;
while(i<j){
while(i<j&&array_to_sort[j]>=pivot) j--;
if(i<j) array_to_sort[i++] = array_to_sort[j];
while(i<j&&array_to_sort[i]<=pivot) i++;
if(i<j) array_to_sort[j--] = array_to_sort[i];
}
array_to_sort[i] = pivot;
_quick_sort_(array,low,i-1);
_quick_sort_(array,i+1,high);
}
}
array_to_sort = document.getElementById('arrayToSort').value.split(',');
_quick_sort_(array_to_sort,0,array_to_sort.length-1);
printArray(array_to_sort);
}
</script>
</head>
<body>
<b>用JavaScript实现几种常见的排序算法</b>
<br/>
请在后面输入需要排序的整数数组,元素间用“,”分割。<input id="arrayToSort" type="text" value=""/>
<br/>
<input type="button" value="插入排序" onclick="insertSort();"/>
<input type="button" value="冒泡排序" onclick="bubbleSort();"/>
<input type="button" value="希尔排序" onclick="shellSort();"/>
<input type="button" value="快速排序" onclick="quickSort();"/>
</body>
</html>
<!--
几种排序算法的JavaScript实现
author:linyang
测试数据:48,37,64,96,75,12,26,48,54,03
-->
<head>
<script type="text/javascript">
/*需要升序排序的整型数组*/
var array_to_sort;
function printArray(array){
alert("当前该整型数组顺序为:" + array.join(','));
}
/*插入排序*/
function insertSort(){
array_to_sort = document.getElementById('arrayToSort').value.split(',');
var n = array_to_sort.length/1;
for(var i=1; i<n; i++){
for(var j=i; j>0; j--){
if(array_to_sort[j]/1<array_to_sort[j-1]/1){
var tmp = array_to_sort[j-1];
array_to_sort[j-1] = array_to_sort[j];
array_to_sort[j] = tmp;
}else
break;
}
}
printArray(array_to_sort);
}
/*冒泡排序*/
function bubbleSort(){
array_to_sort = document.getElementById('arrayToSort').value.split(',');
for(var i=1; i<array_to_sort.length/1; i++){
for(var j=0; j<array_to_sort.length/1-i; j++){
if(array_to_sort[j]/1>array_to_sort[j+1]/1){
var tmp = array_to_sort[j];
array_to_sort[j] = array_to_sort[j+1];
array_to_sort[j+1] = tmp;
}
}
}
printArray(array_to_sort);
}
/*希尔排序*/
function shellSort(){
array_to_sort = document.getElementById('arrayToSort').value.split(',');
var delta = new Array();
var k = array_to_sort.length/1;
while((k= Math.floor(k/2))>0){
//k = Math.floor(k/2);
delta.push(k);
}
for(var i=0; i<delta.length; i++){
var dk = delta[i];
for(var k=delta[i]; k<array_to_sort.length/1;++k)
if(array_to_sort[k]/1<array_to_sort[k-dk]/1){
var t = array_to_sort[k];
for(var j=k-dk;j>=0&&t<array_to_sort[j];j-=dk)
array_to_sort[j+dk] = array_to_sort[j];
array_to_sort[j+dk] = t;
}
}
printArray(array_to_sort);
}
/*快速排序*/
function quickSort(){
var _quick_sort_ = function(array,low,high){
var pivot,i,j;
if(low<high){
pivot = array_to_sort[low]; i=low; j=high;
while(i<j){
while(i<j&&array_to_sort[j]>=pivot) j--;
if(i<j) array_to_sort[i++] = array_to_sort[j];
while(i<j&&array_to_sort[i]<=pivot) i++;
if(i<j) array_to_sort[j--] = array_to_sort[i];
}
array_to_sort[i] = pivot;
_quick_sort_(array,low,i-1);
_quick_sort_(array,i+1,high);
}
}
array_to_sort = document.getElementById('arrayToSort').value.split(',');
_quick_sort_(array_to_sort,0,array_to_sort.length-1);
printArray(array_to_sort);
}
</script>
</head>
<body>
<b>用JavaScript实现几种常见的排序算法</b>
<br/>
请在后面输入需要排序的整数数组,元素间用“,”分割。<input id="arrayToSort" type="text" value=""/>
<br/>
<input type="button" value="插入排序" onclick="insertSort();"/>
<input type="button" value="冒泡排序" onclick="bubbleSort();"/>
<input type="button" value="希尔排序" onclick="shellSort();"/>
<input type="button" value="快速排序" onclick="quickSort();"/>
</body>
</html>