排序算法

这里首先推荐一个数据结构和算法动态可视化网站:https://visualgo.net/zh

排序是开发中十分常见且核心的操作,虽说实际项目中很小几率会需要我们手动实现,但是了解这些精妙的思想对我们还是大有裨益的。本文简单总结下最基础的几类算法。

1. 冒泡(Bubble Sort)

  • 思想
    对相邻的元素进行两两比较,顺序相反则进行交换,这样,每一趟会将最小或最大的元素“浮”到顶端,最终达到完全有序。
    在冒泡排序的过程中,如果某一趟执行完毕,没有做任何一次交换操作,比如数组[5,4,1,2,3],执行了两次冒泡之后变为[1,2,3,4,5]。此时,再执行第三次循环后,一次交换都没有做,这就说明剩下的序列已经是有序的,排序提前完成。

  • JavaScript实现

function bubbleSort(arr) {
  var len = arr.length;
  var i, j, temp, bSwap;
  for(i=0; iarr[j+1]){
        temp = arr[j];
        arr[j] = arr[j+1];
        arr[j+1] = temp;
        // 交换两个数值的简便方式
        // [arr[j],arr[j+1]] = [arr[j+1],arr[j]];   
        bSwap = true;
      }
    }
    if (!bSwap){
        break;
    }
  }
  return arr;
}

2. 插入

3. 选择

4. 希尔

5. 快排

6. 归并

7. 堆排序

你可能感兴趣的:(排序算法)