各种排序方法复杂度总结_第1页
各种排序方法复杂度总结_第2页
各种排序方法复杂度总结_第3页
各种排序方法复杂度总结_第4页
各种排序方法复杂度总结_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

各种排序方法复杂度总结各种排序方法复杂度总结 在 C 中 排序算法是最基本最常用的算法 不同的排序算法在不同的场景或应用中会有不同的表现 接下 来小编搜集了各种排序方法复杂度总结 欢迎查看 一 冒泡 排序 主要思路是 通过交换相邻的两个数变成小数在前大数在后 这样每次遍 历后 最大的数就 沉 到最后面了 重复 N 次即可以使数组 有序 代码实现 void bubble sort int arr int len for int i 0 i len 1 i for int j len 1 j i j if arr j arr j 1 int temp arr j arr j arr j 1 arr j 1 temp 冒泡排序改进1 在某次遍历中 如果没有数据交换 说明整个数组已经有序 因此通过设置标志位来记录此次遍历有无数据交换就可以判断 是否要继续循环 冒泡排序改进2 记录某次遍历时最后发生数据交换的位置 这个位置之后的 数据显然已经有序 因此设置标志位记录每次遍历中最后发生 数据交换的位置可以确定下次循环的范围 二 直接插入排序 主要思路是 每次将一个待排序的数组元素 插入到前面已排序的序列中 这个元素应该在的位置 直到全部数据插入完成 类似扑克牌 洗牌过程 代码实现 void sort int arr int len for int i 1 i len i int j i 1 int k arr i while j 1 k arr j arr j 1 arr j j arr j 1 k 三 直接选择排序 主要思路是 数组分成有序区和无序区 初始时整个数组都是无序区 每 次遍历都从无序区选择一个最小的元素直接放在有序区最后 直到排序完成 代码实现 void select sort int arr int len for int i 0 i len i int index i for int j i 1 j len j if arr j arr index index j if index i int temp arr i arr i arr index arr index temp 四 快速排序 主要思路是 挖坑填数 分治法 首先令 i L j R 将 a i 挖出形成打 一个坑 称 a i 为基准数 然后 j 从后向前找到一个比基准 数小的数 挖出来填到 a i 的坑中 这样 a j 就形成了一个新的 坑 再 i 从前向后找到一个比基准数大的数填到 a j 坑中 重 复进行这种挖坑填数 直到 i j 这时 a i 形成了一个新的坑 将基数填到 a i 坑中 这样 i 之前的数都比基准数小 i 之后的 数都比基准数大 因此将数组分成两部分再分别重复上述步骤 就完成了排序 代码实现 void quick sort int arr int left int right if left right int i left j right target arr left while i j while i j arr j target j if i j arr i arr j while i j arr i target i if i j arr j arr i arr i target qu

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论