用JavaScript写的几个排序

来源:互联网 发布:nginx if else 编辑:程序博客网 时间:2024/05/02 08:03

上个月回头看《大话数据结构》的时候用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 );}


0 0