• JavaScript算法-希尔排序

    JavaScript算法-希尔排序

    • 希尔排序
    • 这个算法在插入排序的基础上作出了很大的改善。希尔排序的核心理念与插入排序不同,它会首先比较距离较远的元素,而非相邻的元素。和简单的比较相邻元素相比,使用这种方案可以使离正确位置很远的元素更快回到适合的位置。当开始用这个算法遍历数据集时,所有元素之间的距离会不断减小,直到处理到数据集的末尾,这时算法比较的就是相邻元素了。
    • 主要是通过遍历数组中相隔相同位置的元素去比较大小进行排列
    1. function shellsort() {
    2. for (var g = 0; i <
    3. this.gaps.length; ++g) {
    4. for (var i = 0; i < this.dataStore.length; ++i) {
    5. var temp = this.dataStore[i];
    6. for (var j = i; j >= this.gaps[g] && this.dataStore[j-this.gaps[g]] > temp; j -= this.gaps[g]) {
    7. this.dataStore[j] = this.dataStore[j-this.gaps[g]];
    8. }
    9. this.dataStore[j] = temp;
    10. }
    11. }
    12. }
    • CArray构造函数中添加
    1. this.gaps = [5,3,1];
    2. //并添加一个函数
    3. function setGap(arr) {
    4. this.gaps = arr ;
    5. }