当前位置: 首页 > news >正文

数据结构(九)——排序

一、排序的基本概念

1.排序:重新排列表中的元素,使表中的元素满足按关键字有序

2.稳定性:Ri和Rj相对位置保持不变

3.内部排序:指在排序期间元素全部存在内存中的排序(比较和移动),如插入排序、交换排序、选择排序、归并排序和基数排序

4.外部排序:指在排序期间元素无法全部同时存放在内存中,必须在排序的过程中根据
要求不断地在内,外存之间移动的排序

eg:内部排序方法的稳定性是指该排序算法不允许有相同的关键字记录(×)

二、插入排序

基本思想:每次将一个待排序的记录按其关键字大小插入到前面已排好序的子序列中,直到全部记录插入完成

 1.直接插入排序  

代码实现:

void InsertSort(ElemType A[],int n){int i,j;for(i=2;i<=n;i++){if(A[i]<A[i-1]){A[0]=A[i];for(j=i-1;A[0]<A[j];--j){A[j+1]=A[j];}A[j+1]=A[0];}}
}

空间效率:O(1)

时间效率:O(n^2)

稳定性:稳定

2.希尔排序

把相隔某个增量的记录组成一个子表,对各个子表分别进行直接插入排序,当整个表中的元素已呈基本有序时,再对全体记录进行一次直接插入排序

空间效率:O(1)

时间效率:不确定

稳定性:不稳定

eg:(B)方法是从未排序的序列中挑选元素,并将其放入已排序序列的一种

A.归并排序  B.插入排序  C.快速排序  D.选择排序

eg:用希尔排序法对关键字序列{20,25,12,47,15,83,30,76}进行排序时,增量为3的一趟排序结果是:20  15  12  30  25  83  47  76

三、交换排序

1.冒泡排序

基本思想是:从后往前(或者从前往后)两两比较相邻元素的值,若为逆序则进行交换,直到序列比较完,第一趟冒泡结束,结果是将最小的元素交换到待排序列的第一个位置(或将最大的元素交换到待排序列的最后一个位置)

代码实现:

void BubbleSort(ElemType A[],int n){for(i=0;i<n-1;i++){flag=false;for(j=n-1;j>i;j--){if(A[j-1]>A[j]){swap(A[j-1],A[j]);flag=true;}}if(flag==false){return;}}
}

空间效率:O(1)

时间效率:O(n^2)

稳定性:稳定

eg:对于n个不同的关键字由小到大进行冒泡排序,在下列(B)情况下交换的次数最多

A.从小到大排列好的  B.从大到小排列好的  C.元素无序  D.元素基本有序

2.快速排序

基本思想是:在待排序表L[1,…,n]中任取一个元素 pivot 作为枢轴(通常取首元素)通过一趟快速排序将待排序表划分为独立的两部分[1,…,k-1]和[k+1,…,n],pivot放在了最终位置L[k]中

eg:对关键字序列{49,38,65,97,76,13,27,49'}进行快速排序

空间效率:O(log2n)

时间效率:O(nlog2n)

稳定性:不稳定

快速排序是所有内部排序算法中平均性能最优的排序算法

快速排序并不适用于原本有序或基本有序的记录序列进行排序

四、习题

答案:

答案:B

答案:49  13  27  50  76  38  65  97

答案:4

答案:O(n^2);O(n)

答案:C

答案:C

答案:

  • 第 1 趟:(71, 52, 22, 15, 30, 3, 77)
  • 第 2 趟:(52, 22, 15, 30, 3, 71, 77)
  • 第 3 趟:(22, 15, 30, 3, 52, 71, 77)
  • 第 4 趟:(15, 22, 3, 30, 52, 71, 77)
  • 第 5 趟:(15, 3, 22, 30, 52, 71, 77)
  • 第 6 趟:(3, 15, 22, 30, 52, 71, 77) 

答案:D

答案:

  1. 初始(29, 18, 25, 47, 58, 12, 51, 10)
  2. 第 1 趟(12, 18, 25, 10, 29, 58, 51, 47)
  3. 第 2 趟(10, 12, 25, 18, 29, 58, 51, 47)
  4. 第 3 趟(10, 12, 18, 25, 29, 58, 51, 47)
  5. 第 4 趟(10, 12, 18, 25, 29, 47, 51, 58)
  6. 第 5 趟(10, 12, 18, 25, 29, 47, 51, 58)

相关文章:

  • Xournal++:开源跨平台笔记软件,手写与创作的完美结合
  • SQL笔记一
  • 1267, “Illegal mix of collations (latin1_swedish_ci,IMPLICIT
  • Spring MVC 接口的访问方法如何设置
  • 主流快递查询API横向对比:快递100快递鸟菜鸟物流接口差异解析
  • 本地 PC 使用Offset Explorer连接实体Ubuntu Kafka 【单机】超时问题解决
  • 印度Rummy游戏支付通道申请策略:技巧类游戏的合规与创新
  • 5.19 BGP实验
  • 动态规划之数列
  • 免疫浸润分析
  • C语言-8.数组
  • Java大师成长计划之第23天:Spring生态与微服务架构之服务发现与注册中心
  • Manus AI 原理深度解析第三篇:Tools
  • 电总协议调试助手更新-PowerBus-v1.0.5
  • 作业帮Java后台开发面试题及参考答案(下)
  • ACI Fabric 中的各种地址
  • OneNote内容太多插入标记卡死的解决办法
  • 汽配知识(三)|跨境电商平台的汽配类目划分与关键词逻辑
  • Hive PredicatePushDown 谓词下推规则的计算逻辑
  • 嵌入式学习笔记DAY21(双向链表、Makefile)
  • 七猫征文大赛颁出112万奖金,非遗题材作品斩获金奖
  • 美F-35险被胡塞武装击中,损失增大让行动成“烂尾仗”
  • 刘强东坐镇京东一线:管理层培训1800人次,最注重用户体验
  • 基金经理调仓引发大金融板块拉升?公募新规落地究竟利好哪些板块
  • 被前男友泼汽油致残后,一个女孩经历的双重灼烧
  • 汕头违建豪宅“英之园”将强拆,当地:将根据公告期内具体情况采取下一步措施