一、    冒泡排序

1、         概念:反复扫描排序序列,且在过程中顺次比较相邻的两个元素的大小,将较小的数放在前面,大的元素放在后面。然后比较第二个数和第三个数,依旧将小数放前,大数放后,如此继续,直至比较到最后两个数。执行第二次比较,只比较前面的n-1个数字,得到次大的放在倒数第二位,以此类推,得到升序序列。

2、         时间复杂度:O(n2)

3、         空间复杂度:O(1)

4、         代码(参考他人图):

数据结构排序算法总结

二、    直接插入排序

1、         概念:在已经被排好序的序列内,将没有被排进去的元素按照规定插入到指定的位置

2、         时间复杂度:O(n2)

3、         空间复杂度:O(1)

4、         代码(参考他人图):

数据结构排序算法总结

三、    折半插入排序

1、         概念:前面部分是有序序列,折半查询容易定位

2、         时间复杂度:O(n2)

3、         空间复杂度:O(1)

4、         代码(参考他人图):

数据结构排序算法总结

四、    希尔排序

1、         概念:把待排序的序列分成若干的小的子序列,然后逐个使用直接插入法排序,最后再对一个比较有序的序列进行排序,可以减少移动的次数。

2、         时间复杂度:O(n1.5)

3、         空间复杂度:O(1)

4、         代码(参考他人图):

数据结构排序算法总结

五、    快速排序

1、         概念:以一个关键元素为轴,从左至右依次和它比较然后进行交换。在第一次结束后,把序列分为两个子序列,然后进行分段快速排序

2、         时间复杂度:O(nlogn)

3、         空间复杂度:O(logn)

4、         代码(参考他人图):

数据结构排序算法总结

六、    堆排序

1、         概念:把待排序的元素存放在数组r[1…n]中,将r看成是一刻完全二叉树的顺序表示,每个节点表示一个记录,第一个记录r[1]作为二叉树的根,一下个记录r[2…n]依次逐层从左到右顺序排列,任意节点r[i]的左孩子是r[2i],右孩子是r[2i+1],双亲是r[i/2向下取整]。然后对这棵完全二叉树进行调整建堆。

2、         时间复杂度:O(nlogn)

3、         空间复杂度O(1)

4、         代码(参考他人图):

数据结构排序算法总结

 

相关文章:

  • 2022-12-23
  • 2021-11-28
  • 2021-10-12
  • 2021-11-14
  • 2021-06-26
  • 2022-12-23
猜你喜欢
  • 2021-11-25
  • 2021-08-21
  • 2021-07-03
相关资源
相似解决方案