对常见排序的总结【C语言】

本文介绍了几种基本的排序算法,包括插入排序、选择排序、冒泡排序、归并排序和快速排序,以及基数排序。详细阐述了每种排序算法的工作原理、稳定性、时间复杂度和空间复杂度,并给出了具体的排序实例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

插入排序

选择排序

冒泡排序

归并排序

快速排序

基数排序


插入排序

  • 逐个从未排序部分取元素,放入已排序部分的正确位置
  • 插入排序是稳定的:找的是已排序部分首个大于待插入元素位置
  • 时间复杂度O(n²)
  • 空间复杂度O(1)

1.对序列(19,8,67,19,81,2,26)从小到大排序,请写出插入排序3趟之后的结果:_________

答案:3,19,19,67,81,2,26

分析:

初始时,已排序部分只有首元素。

初始:19,8,67,19,81,2,26

第1趟:8,19,67,19,81,2,26

第2趟:8,19,67,19,81,2,26

第3趟:8,19,19,67,81,2,26

选择排序

  • 将序列分为已排序部分(初始为空)和未排序部分
  • 依次从未排序部分挑选一个最小的(最大的),将它添加到已完成的末尾
  • 选择排序是不稳定排序,因为添加本趟元素时发生位置交换
  • 时间复杂度O(n²)
  • 空间复杂度O(1)

 1.对序列(19,8,67,19,81,2,26)从小到大排序,请写出插入排序3趟之后的结果:_________

答案:2,8,19,67,81,19,26

分析:初始时,已排序部分为

初始:19,8,67,19,81,2,26

第1趟:2,8,67,19,81,19,26

第2趟:2,8,67,19,81,19,26

第3趟:2,8,19,67,81,19,26

冒泡排序

  • 比较相邻元素,将逆序者交换位置,将大的元素逐步右移至已排序部分最左端
  • 冒泡排序是稳定的,因相邻元素相等则无需交换
  • 时间复杂度O(n²)
  • 空间复杂度O(1)
  • 在序列初始已较为有序的情况下,冒泡效率很高
  • 在最坏情况下(初始倒序),O(n²)

归并排序

  • 从大到小,划分序列直至子序列长度为1,将其视为一个有序子序列
  • 从小到大,不断合并两个有序子序列,最终使得整个序列有序
  • 归并排序是稳定的,因为合并两有序表不改变相同元素顺序
  • 利用分治思想:时间复杂度O(n*lgn)
  • 合并两个有序顺序表:空间复杂度O(n)

快速排序

  • 每趟确定一个元素位置,左边的都比它小,右边的都比它大,再一样递归分别处理左右
  • 这个元素称为基准,通常选当前子序列的首元素
  • 快排是交换排序,且可能发生跨多元素交换,因此是不稳定的
  • 如果初始序列较为随机,快排是O(n*lgn)
  • 但若初始序列较为有序(无论序列逆序或正序),快排退化为O(n²)。此时每趟划分时,基准无法将序列划分为长度较为相等的两部分,即相当于分治失效了

1.对下列序列35,44,67,23,15,44,39,32进行快速排序,每次划分以被划分区域内第一个元素作为基准元素,写出每次划分后得到的序列。

分析:

初始:35,44,67,23,15,44,39,32

1趟划分:{35,15,23},35,{67,44,39,44}

2趟划分:{15,23}32,35,{67,44,39,44}

3趟划分:{15,23},32,35,{44,44,39},67

4趟划分:15,{23},32,35,{44,44,39},67

5趟划分:15,23,32,35,{39,44},44,67

6趟划分:15,23,32,35,39,{44},44,67

基数排序

  • 按照各位置进行分配收集,无需比较元素值大小,是桶式排序
  • 按位分配,按序收集

1.对序列(278,109,63,930,589,184,505,269,8,83)进行基数排序,请写出第一次分配-收集后的序列。

分析:

第一次分配-收集应按个位数字进行,第二次按十位,以此类推。

注意分配和收集都应按照元素在本来序列中的顺序进行。

答案:930,63,83,184,505,278,8,109,589,269

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值