数据结构算法动图识记_十大经典排序算法(动态演示+代码)!干货收藏

本文系统整理了冒泡排序、选择排序和插入排序的算法思想、时间空间复杂度比较,并通过动图动态演示过程,同时提供了相应的代码实现,是学习数据结构算法的好资料。
摘要由CSDN通过智能技术生成
7bf126032f7eed4497910dbcbb64ff8a.png

来自公众号:C语言与cpp编程

以前也零零碎碎发过一些排序算法,但排版都不太好,又重新整理一次,排序算法是数据结构的重要部分,系统地学习很有必要。

时间、空间复杂度比较

675e1bfb3196cd0d54fe3e587b6276c6.png

1 冒泡排序

算法思想

  1. 比较相邻的元素。如果第一个比第二个大,就交换他们两个。
  2. 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素会是最大的数。
  3. 针对所有的元素重复以上的步骤,除了最后一个。
  4. 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
13c3c84e72c2939b3f95d743206f3dc2.gif

冒泡排序动图演示

代码:

void bubbleSort(int a[], int n){  for(int i =0 ; i< n-1; ++i)  {    for(int j = 0; j < n-i-1; ++j)    {      if(a[j] > a[j+1])      {        int tmp = a[j] ;  //交换        a[j] = a[j+1] ;        a[j+1] = tmp;      }    }  }}

2 选择排序

算法思想

  1. 在未排序序列中找到最小(大)元素,存放到排序序列的起始位置
  2. 从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾
  3. 以此类推,直到所有元素均排序完毕
bf8d03e9fc9ef0a4ac325e3389ef21ef.gif

选择排序动图演示

代码:

function selectionSort(arr) {    var len = arr.length;    var minIndex, temp;    for (var i = 0; i < len - 1; i++) {        minIndex = i;        for (var j = i + 1; j < len; j++) {            if (arr[j] < arr[minIndex]) {     // 寻找最小的数                minIndex = j;                 // 将最小数的索引保存            }        }        temp = arr[i];        arr[i] = arr[minIndex];        arr[minIndex] = temp;    }    return arr;}

3 插入排序

算法思想

  1. 从第一个元素开始,该元素可以认为已经被排序
  2. 取出下一个元素,在已经排序的元素序列中从后向前扫描
  3. 如果该元素(已排序)大于新元素,将该元素移到下一位置
  4. 重复步骤3,直到找到已排序的元素小于或者等于新元素的位置
  5. 将新元素插入到该位置后
  6. 重复步骤2~5
f89cc43e85dbbefebef48e11460bb202.gif

插入排序动图演示

代码:

void print(int a[], int n ,int i){  cout<

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值