排序算法

这里首先推荐一个数据结构和算法动态可视化网站: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; i<len-1; i++){
    bSwap = false;
    for(j=0; j<len-i-1; j++){
      if(arr[j]>arr[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. 堆排序

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 概述 排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部...
    蚁前阅读 5,224评论 0 52
  • 概述:排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部...
    每天刷两次牙阅读 3,747评论 0 15
  • 概述 排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部...
    闲云清烟阅读 769评论 0 6
  • 概述排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的...
    Luc_阅读 2,309评论 0 35
  • 从公园走路回家,无意听到两小姑娘的对话,是那个约莫四五岁的小姑娘对那个十岁左右的大姑娘说的,她说:我觉得我们以前的...
    洛洛姨阅读 400评论 0 2