草鞋

          Blog grass shoes
          posts - 1, comments - 4, trackbacks - 0, articles - 27
            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

          JS排序

          Posted on 2007-10-23 09:30 草 鞋 閱讀(326) 評論(0)  編輯  收藏 所屬分類: JavaScript

          <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
          <HTML>
           <HEAD>
            <TITLE> New Document </TITLE>
            <META NAME="Generator" CONTENT="EditPlus">
            <META NAME="Author" CONTENT="">
            <META NAME="Keywords" CONTENT="">
            <META NAME="Description" CONTENT="">
           </HEAD>

           <BODY>
            <style>
          fieldset {
           font-size:12px;
           padding:10px;
           width:80%;
           margin:auto;
          }
          input {
           font-size:12px;
           font-family:Tahoma;
          }
          </style>
          <title>排序</title>
          <h3 align="center">排序</h3>
          <fieldset>
          <legend>插入排序</legend>

          <p><b>直接插入排序</b>
          請輸入一段要排序的字符,用半角逗號隔開
          <input name=insert type=text size=100 value="g,v,u,f,p,o,i,a,t,j,e,l,k">
          <br><input type=button value=" 排序 " onclick="alert(InsertSort(insert.value.split(',')));">

          <p><b>希兒排序</b><br>
            <input name=Shell type=text size=100 value="g,v,u,f,p,o,i,a,t,j">
          <br><input type=button value=" 排序 " onclick="alert(ShellSort(Shell.value.split(',')));">

          </fieldset>
          <p>
          <fieldset>
          <legend>交換排序</legend>

          <b>冒泡排序</b><br>
          <input name=bubble type=text size=100 value="g,v,u,f,p,o,i,a,t,j,e,l,k">
          <br><input type=button value=" 排序 " onclick="alert(BubbleSort(bubble.value.split(',')));">

          <p><b>快速排序<br>
          </b>
            <input name=quick type=text size=100 value="3,1,5,4,6">
          <br><input type=button value=" 排序 " onclick="alert(QuickSortDemo(quick.value.split(',')));">

          </fieldset>
          <p>
          <fieldset>
          <legend>選擇排序</legend>

          <b>直接選擇排序</b><br>
          <input name=select1 type=text size=100 value="g,v,u,f,p,o,i,a,t,j,e,l,k">
          <br><input type=button value=" 排序 " onclick="alert(SelectSort(select1.value.split(',')));">

          <p>... ...

          </fieldset>


          <script>
           function InsertSort(arr) { //插入排序->直接插入法排序
            var st = new Date();
            var temp, j;
            for(var i=1; i<arr.length; i++) {
             if((arr[i]) < (arr[i-1])) {
              temp = arr[i];
              j = i-1;
              do {
               arr[j+1] = arr[j];
               j--;
              }
              while (j>-1 && (temp) < (arr[j]));
              arr[j+1] = temp;
             }//endif
            }
            status = (new Date() - st) + ' ms';
            return arr;
           }


           function ShellSort(arr) { //插入排序->希兒排序
            var st = new Date();
            var increment = arr.length;
            do {
             increment = (increment/3|0) + 1;
             arr = ShellPass(arr, increment);
            }
            while (increment > 1)

            status = (new Date() - st) + ' ms';
            return arr;
           }
           function ShellPass(arr, d) { //希兒排序分段執行函數
            var temp, j;
            for(var i=d; i<arr.length; i++) {
             if((arr[i]) < (arr[i-d])) {
              temp = arr[i]; j = i-d;
              do {
               arr[j+d] = arr[j];
               j = j-d;
              }
              while (j>-1 && (temp) < (arr[j]));
              arr[j+d] = temp;
             }//endif
            }
            return arr;
           }


           function BubbleSort(arr) { //交換排序->冒泡排序
            var st = new Date();
            var temp;
            var exchange;
            for(var i=0; i<arr.length; i++) {
             exchange = false;
             for(var j=arr.length-2; j>=i; j--) {
              if((arr[j+1]) < (arr[j])) {
               temp = arr[j+1];
               arr[j+1] = arr[j];
               arr[j] = temp;
               exchange = true;
              }
             }
             if(!exchange) break;
            }
            status = (new Date() - st) + ' ms';
            return arr;
           }

           function QuickSortDemo(arr) {
            var st = new Date();
            var result = QuickSort(arr);
            status = (new Date() - st) + ' ms';
            return result;
           }

           function QuickSort(arr) { //交換排序->快速排序
            if (arguments.length>1) {
             var low = arguments[1];
             var high = arguments[2];
            } else {
             var low = 0;
             var high = arr.length-1;
            }
            if(low < high){
             // function Partition
             var i = low;
             var j = high;
             var pivot = arr[i];
             while(i<j) {
              while(i<j && arr[j]>=pivot)
               j--;
              if(i<j)
               arr[i++] = arr[j];
              while(i<j && arr[i]<=pivot)
               i++;
              if(i<j)
               arr[j--] = arr[i];
             }//endwhile
             arr[i] = pivot;
             // end function
             var pivotpos = i; //Partition(arr,low,high);
             QuickSort(arr, low, pivotpos-1);
             QuickSort(arr, pivotpos+1, high);
            } else
             return;
             return arr;
           }
           
           /*function Partition(arr, i, j) { //快速排序, 對待排序的數組進行劃分
            var pivot = arr[i];
            while(i<j) {
             while(arr[j]>=pivot)
              j--;
             if(i<j)
              arr[i++] = arr[j];
             while(arr[i]<=pivot)
              i++;
             if(i<j)
              arr[j--] = arr[i];
            }
            arr[i] = pivot;
            return arr;
           }*/

           function SelectSort(arr) { //選擇排序->直接選擇排序
            var st = new Date();
            var temp;
            for(var i=0; i<arr.length; i++) {
             var k = i;
             for(var j=i+1; j<arr.length; j++) {
              if((arr[j]) < (arr[k]))
               k = j;
             }
             if (k != i){
              temp = arr[i];
              arr[i] = arr[k];
              arr[k] = temp;
             }
            }
            status = (new Date() - st) + ' ms';
            return arr;
           }
           

           function unicode(str) {//求字符串的unicode碼
            var uni=0;
            for(var i=0; i<str.length; i++){
             uni += str.charCodeAt(i)/6553.5 * Math.pow(10, str.length-i);
            }
            return uni;
           }
          </script>

           </BODY>
          </HTML>

          主站蜘蛛池模板: 阿瓦提县| 长白| 辉南县| 兴化市| 泸西县| 兰州市| 新乡县| 鄢陵县| 潞城市| 德保县| 策勒县| 牡丹江市| 平度市| 林甸县| 霍山县| 长寿区| 绿春县| 册亨县| 丹江口市| 剑川县| 体育| 民和| 安宁市| 花莲县| 托克逊县| 泽库县| 达日县| 长沙市| 镇宁| 宾阳县| 滦南县| 阳原县| 哈密市| 临安市| 汨罗市| 石柱| 长海县| 双桥区| 都江堰市| 朝阳市| 东莞市|