使用JavaScript实现的几个排序算法
对照数据结构与算法这门课用JavaScript实现的几种排序算法。用什么语言不重要,重要的是算法本身。我果然还是用JavaScript实现起来容易些。哎。。。代码:(保存为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>