排序算法
各种排序算法
千寻瀑༄
一身诗意千寻瀑,万古人间四月天
展开
-
数据结构之插入排序:希尔排序(缩小增量排序)
排序算法:希尔排序希尔排序的定义:希尔排序的定义:原创 2020-04-22 12:08:01 · 169 阅读 · 0 评论 -
数据结构之外部排序:最佳归并树
外部排序:最佳归并树归并树的定义:例:最佳归并树(本质是一颗哈夫曼树):所有的初始归并段一定能构造出一颗完美的哈夫曼树吗?怎么选择补充虚短的个数?归并树的定义:例:另一种理解方式:1、每个数字代表了一个归并段的长度2、121就代表了总的数据元素的个数3、树的深度代表了读或写的次数4、总的IO的读写次数=(读+写)✖元素个数 = (2+2)×121=484但是这个只是一颗普通...原创 2020-04-22 12:07:49 · 6388 阅读 · 0 评论 -
数据结构之外部排序:置换-选择排序
外部排序:置换-选择排序置换-选择排序算法思想:通过减少归并段r来减少IO次数置换-选择排序算法思想:minimax就是FO中的最后一个数据元素的大小1、将工作区填满2、从工作区选出最小的minimax,输出到FO3、从FI中在输入一个数据元素4、在查找比minimax大的最小的元素,输出到FO5、直到工作区没有比minimax大的数据元素...原创 2020-04-22 12:07:34 · 1728 阅读 · 2 评论 -
数据结构之外部排序:失败树
外部排序:失败树通过失败树来增加归并排序路数从而减少io读写次数原创 2020-04-22 12:07:23 · 588 阅读 · 0 评论 -
数据结构之外部排序:归并排序法
外部排序:归并排序法外部归并排序的原理:外部归并排序的性能:外部归并排序的原理:第一步:第二步:问题:内存缓存区大小固定,外存数据元素分块后仍然无法将俩块放入比较答:因为归并段已经块内有序,所以只需要将归并段部分装入内存,比较每个归并段相同位置元素的先后次序写入结果集即可例:有俩个归并段1358和2467,每个缓存区可以存放2个数据元素1、先将俩个个归并段的前俩个数据元素写入内存...原创 2020-04-22 12:07:11 · 6000 阅读 · 1 评论 -
数据结构之排序算法:内部排序算法的应用与比较
排序算法:内部排序算法的应用与比较思维导图:比较:应用:思维导图:比较:应用:原创 2020-04-22 12:06:59 · 207 阅读 · 0 评论 -
数据结构之排序算法:并归排序
排序算法:并归排序归并排序的定义:俩个有序线性表的合并:归并排序的代码实现:归并排序的性能:归并排序的定义:俩个有序线性表的合并:int *B = (int *)malloc((n+1) * sizeof(int)); //总长度存储空间,0不使用// 初始数组、第一个组的初始元素位置、第一个组的最后元素位置、第二个组的最后元素位置 void Merge(int A[],int low...原创 2020-04-22 12:06:46 · 374 阅读 · 0 评论 -
数据结构之选择排序:堆排序
选择排序:堆排序堆的概念:堆的初始化:堆排序代码实现:堆排序的插入:堆排序的性能:堆的概念:i的范围为n/2取下界,即最后一个双亲节点小根堆:大根堆:堆的初始化:以大根堆为例:待插图:代码实现:void BuildMaxHeap(int a[],int len){ for(int i=len/2;i>0;i--) AdjustDown(a,i,len);}v...原创 2020-04-22 12:06:35 · 156 阅读 · 0 评论 -
数据结构之插入排序:折半插入排序算法
排序算法:折半插入排序算法折半插入排序算法的定义:折半插入排序算法的原理:折半插入排序算法的代码实现:折半插入排序算法的性能:折半插入排序算法的定义:插入排序时查找要插入位置用折半查找法折半插入排序算法的原理:见直接插入排序折半插入排序算法的代码实现:void BInsertSort(int a[],int n){ int low,high,mid; int i,j; for(...原创 2020-04-22 12:06:23 · 1250 阅读 · 0 评论 -
数据结构之插入排序:直接插入排序
排序算法:直接插入排序原创 2020-04-22 12:06:11 · 157 阅读 · 0 评论 -
数据结构之排序算法:基数排序
排序算法:基数排序基数排序的定义:分配和收集:基数排序的性能:基数排序的定义:ps:n表示线性表长度d表示每个元素的位数,例324有三位数字r表示基数,10进制基数是10,2进制基数是2分配和收集:例:低位优先第一次分配收集: 以个位为准按Q~0~到Q~9~的顺序收集,结果为第一次分配收集结果第二次分配收集: 以十位为准按Q0到Q9的顺序收集,结果为第二次分配收集结果...原创 2020-04-22 12:05:59 · 747 阅读 · 0 评论 -
数据结构之选择排序:直接选择排序
选择排序:直接选择排序原创 2020-04-22 12:05:47 · 402 阅读 · 0 评论 -
数据结构之交换排序:快速排序
交换排序:快速排序快速排序的算法原理:快速排序的代码实现:快速排序的性能分析:快速排序的算法原理:pivot前面的元素都比它小,后面的元素都比它大快速排序的代码实现:快速排序的性能分析:...原创 2020-04-22 12:05:31 · 159 阅读 · 0 评论 -
数据结构之交换排序:冒泡排序
交换排序:冒泡排序冒泡排序的基本思想:冒泡排序的代码实现:冒泡排序的性能:冒泡排序的基本思想:一次排序找到了最大的元素并放入相应位置,比较n-1趟就能得到一个有序数列冒泡排序的代码实现:void BubbleSort(int a[],int n){ for(int i=0;i<n-1;i++){ bool flag = false; int temp; for(i...原创 2020-04-22 12:05:19 · 470 阅读 · 0 评论 -
数据结构之排序算法:基础概念
排序算法:基础概念思维导图:排序的定义:算法的稳定性:内部排序和外部排序:思维导图:排序的定义:算法的稳定性:浅蓝色和深蓝色的小朋友关键字相同,若排序之后,浅蓝色和深蓝色小朋友的顺序没有变,则称该算法稳定内部排序和外部排序:...原创 2020-04-22 12:04:58 · 143 阅读 · 0 评论