| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 数据结构与算法 -> 【数据结构】内排序小结 -> 正文阅读 |
|
[数据结构与算法]【数据结构】内排序小结 |
“ Ctrl AC!一起 AC!” 目录 排序码与关键码排序码:以此码作为比较进行排序? 关键码:能唯一标识一个记录的字段称为关键码 比如(可能不恰当) a b c d 这一序列 排序码是它们在字母表中的顺序 关键码是它们本身"a" "b" "c" "d" 插入排序插入排序的基本方法是:将待排序文件中的记录,逐个地按其排序码值的大小插入到目前已经排好序的若干个记录组成的文件中的适当位置,并保持新文件有序。 直接插入排序思路:初始可认为文件中的第一个记录已排好序,然后将第二个到第n个记录依次插入到已排序的记录组成的文件中。 将当前待排序的元素与已排序好的元素序列作比较,若已排好序的序列的最后一个元素小于等于当前元素,则当前元素的排序结束,轮到当前元素的下一个元素排序,否则,已排好序的序列的最后一个元素往后移一位继续将当前元素与已排好序的序列的倒数第二个元素进行比较。下标为0处放一个当前元素是为了防止越界。 二分法插入排序思路:在找到第i个记录的插入位置时,前i-1个记录已排序,将第i个记录的排序码key[i]和已排序的前i-1个的中间位置记录的排序码进行比较,如果key[i]小于中间位置记录排序码,则可以在前半部分继续使用二分法查找,否则在后半部分继续使用二分法查找。直到查找范围为空,即可确定key[i]的插入位置。 ?表插入排序思路:表插入排序将在不进行记录移动的情况下,利用存储结构有关信息的改变来达到排序的目的。为此,可以给每个记录附设一个指针域 link,它的类型为整型,表插人排序的思路是,在插人第i个记录R,时,R, R2, ...... Ri-1已经通过各自的指针域link按排序码不减的次序连接成一个 (静态链)表,将记录R;的排序码key;与表中已经排好序的排序码从表头向右、或称向后依次比较,找到R,应插人的位置,将其插人在表中,使表中各记录的排序码仍然有序。 下标0处的link域指向排好序的第一个元素,其他下标的link域指向该元素的下一个元素,最后一个元素的link域指向0 Shell插入排序(希尔排序)
选择排序思想:每次从待排序的文件中选择出排序码最小的记录,将该记录放于已排序文件的最后一个位置,直到已排序文件记录个数等于初始待排序文件的记录个数为止。 直接选择排序首先从所有n个待排序记录中选择排序码最小的记录,将该记录与第一个记录交换,再从剩下的n-1个记录中选出排序码最小的记录和第2个记录交换。重复这样的操作直到剩下两个记录,再从中选出排序码最小的记录和第n-1个记录交换。 树型选择排序堆排序?参考:堆排序https://blog.csdn.net/m0_62434776/article/details/122930566 交换排序思路:对待排序记录两两进行排序码比较,若不满足排序顺序,则交换这对记录,直到任何两个记录的排序码都满足排序要求为止。 冒泡排序具体的做法是:第1趟,对所有记录从左到右每相邻两个记录的排序码进行比较,如果这两个记录的排序码不符合排序要求,则进行交换,这样一趟做完,将排序码最大者放在最后一个位置(即该排序码对应的记录最终应该放的位置).第2趟对前下的n-1个待排序记录重复上述过程,又将个排序码放于最终位置,反复进行n-1次, 可n-1个排序码对应的记录放至最终位置,剩下的即为排序码最小的记录, 它在第1的位置处。如果在某一趟中, 没有发生交换,则说明此时所有记录已经按排序要求排列完毕,排序结束。 快速排序快速排序https://blog.csdn.net/qq_40941722/article/details/94396010?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522165603747316782184657182%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=165603747316782184657182&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~top_positive~default-1-94396010-null-null.142^v21^control,157^v15^new_3&utm_term=%E5%BF%AB%E9%80%9F%E6%8E%92%E5%BA%8F&spm=1018.2226.3001.4187
|
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/25 23:31:22- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |