javascript實現冒泡排序及改進算法

/** * Created by kaer on 2017/5/1. */function bubble(a){    var len = a.length;    for(var i=0;i<len-1;i++){        for(var j = 0;j<len-i;j++){           if(a[j] > a[j+1])           {               var tmp = a[j];               a[j]=a[j+1];               a[j+1] = tmp;           }        }    }    return a;}console.log(bubble([2,1,3,4,6,5]));//改進:設置一個標誌位,用於標識最後一次交換的位置function bubble1(a){    var len = a.length;    var b =len-1;    var pos = 0;    for(var i=0;i<len-1;i++){        for(var j = 0;j<b;j++){            if(a[j] > a[j+1])            {                var tmp = a[j];                a[j]=a[j+1];                a[j+1] = tmp;                pos = j;            }        }        b = pos;    }    return a;}console.log(bubble1([2,1,3,4,6,5]));//改進:一次排序同時找出最大值和最小值,查詢次數減小一半function bubble2(a){    var high = a.length -1;    var low = 0;    while(low < high){        for(var i=0;i<high;i++){            if(a[i]>a[i+1]){                var tmp = a[i];                a[i]=a[i+1];                a[i+1] = tmp;            }        }        --high;        for(var j=high;j>low;j--){            if(a[j]<a[j-1]){                var tmp = a[j];                a[j]=a[j-1];                a[j-1] = tmp;            }        }        ++low;    }    return a;}console.log(bubble2([2,1,3,4,6,5]));
相關文章
相關標籤/搜索