Ruby's Louvre

每天学习一点点算法

导航

鸡尾酒排序

 
         var cocktailSort= function(array) {
          var top = array.length - 1, bottom = 0,flag = true,i, j;
          while (flag) {
            flag = false;
            //从左到右到大,把最大的放到每次范围的最右边
            for (i = bottom; i < top; i++) {
              if (array[i] > array[i + 1]) {
                swap(array, i, i + 1);
                flag = true;
              }
            }
            top--;
            //从右到到左,把最小的放到每次范围的最小边
            for (j = top; j > bottom; j--) {
              if (array[j] < array[j - 1]) {
                swap(array, j, j - 1);
                flag = true;
              }
            }
            bottom++;
          }
        }

        var swap = function(array,a,b){
          var tmp = array[a];
          array[a] = array[b]
          array[b] = tmp;
        }

posted on 2010-01-20 18:34  司徒正美  阅读(897)  评论(0编辑  收藏  举报