【Mark】内部排序

  • 在内存中按关键字有序
  • 判断排序是否稳定,看排序前后相同的次关键字顺序是否改变
  • 按排序时内存工作量区分
    简单排序( O(n2) )
    高级排序( O(nlogn) )
    基数排序( O(d • n) )
  • 按原则分类
    • 插入排序
      直接插入排序(稳定,适合n较小,基本有序;顺序查找插入位置)
      折半插入排序(折半查找插入位置,稳定
      2-路插入排序(循环链表,类似于左小右大)
      表插入排序(不移动记录,静态链表存储,排完后得到一个有序链表,只能顺查,需要重排)
      希尔排序(缩小增量排序,不稳定,先宏观后微观,dk逐渐缩小)
    • 交换排序
      起泡排序(冒泡)(直接插入排序的有序在前,冒泡的在后,稳定
      快速排序(枢轴,不稳定,需一个栈空间来实现递归,越乱越好)
    • 选择排序
      简单选择排序(记录移动次数少,比较次数多,不稳定
      锦标赛排序(又叫树形选择排序,利用上次排序结果)
      堆排序(优于简选排和锦标赛,建堆,最后一个元素交换堆顶,最后一个非叶子结点开始筛选,反复筛选,不稳定
    • 归并排序
      2-路归并排序(稳定,相邻的两两归并,牺牲空间)
    • 计数排序
      基数排序(借助多关键字,没有比较和交换,稳定
      链式基数排序(分配,收集,再分配,再收集)
  • 3种存储结构
    数组
    静态链表
    地址向量

在这里插入图片描述



发布了77 篇原创文章 · 获赞 160 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_43763494/article/details/103841382