用JavaScript写的几个排序

上个月回头看《大话数据结构》的时候用JavaScript写了一下几个简单的排序算法,今天翻出来才发现堆排序、归并排序和快速排序忘了写,汗颜。先拖延着吧,这病是治不好了……


/* 冒泡排序 */
function bubbleSort (arr) {
  var i, j, tmp;
  for ( i = 0; i < arr.length; i++ ) {
    for ( j = arr.length-2; j >= i; j-- ) {
      if ( arr[j] > arr[j+1] ) {
        tmp = arr[j];
        arr[j] = arr[j+1];
        arr[j+1] = tmp;
      }
    }
  }
}
/* 选择排序 */
function selectSort (arr) {
  var i, j, min, tmp;
  for ( i = 0; i < arr.length; i++ ) {
    min = i;
    for ( j = i+1; j < arr.length; j++) {
      if ( arr[j] < arr[min] ) {
        min = j;
      }
    }
    if ( i != min ) {
      tmp = arr[i];
      arr[i] = arr[min];
      arr[min] = tmp;
    }
  }
}
/* 插入排序 */
function insertSort (arr) {
  var i, j, mark;
  for ( i = 1; i < arr.length; i++ ) {
    mark = arr[i];
    for ( j = i-1; j>=0 && arr[j]>mark; j-- ) {
        arr[j+1] = arr[j];
    }
    arr[j+1] = mark;
  }
}
/* 希尔排序 */
function shellSort (arr) {
  var i, j, mark;
  var increment = arr.length;
  do {
    increment = parseInt(increment/3)+1;
    for ( i = increment; i < arr.length; i++ ) {
      if ( arr[i] < arr[i-increment] ) {
        mark = arr[i];
        for ( j=i-increment; j>=0 && mark<arr[j]; j-=increment ) {
          arr[j+increment] = arr[j];
        }
        arr[j+increment] = mark;
      }
    }
  }
  while ( increment > 1 );
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值