分类:内功 - Touale Cula's Blog

前言算法对比: 时空复杂度、算法的稳定性、算法的过程特征 时间复杂度简单选择排序、直接插入排序和冒泡排序平均情况是 O(n^2^) 直接插入排序和冒泡排序最好情况是 O(n) 简单选择排序与初始状态无关(需要遍历求出最小或者最大的数字) 希尔排序对大规模的的排序可以达到很高的效率 堆排序可以在线性时间内完成建堆 快速排序基于分治思想,平均性能可以达到 O(nlog2n),在实际应用中常常由...

前言外部排序用于待排序文件较大、内存无法一次性读取 外部排序原理当数据元素较大时,通过在本地建立输入缓冲区和输出缓冲区,每次读取一小块数据进行排序后放回! 模拟 初始化数据分布如下 读入两块数据 进行排序 映射输出缓冲区,并写出两块数据 重复上述操作,构造归并段 进行第一趟归并 将两块归并段分别放入输入缓冲区 将输入缓冲区前三个放入到输出缓冲区中并...

一、归并排序算法思想: 将两个或两个以上的有序表组合成一个新的有序表。采用分治思想! 二路排序: 思路排序: 模拟实现: 算法实现: 123456789101112131415161718192021222324int *B = (int *)malloc((n+1)*sizeof(int));void merge(int A[],int low,int mid,int high...

前言交换排序主要分为:简单选择排序和堆排序 思想:每一趟在待排序元素中选取关键字最小的元素。 应用:点名,哈希碰撞排序(统计词频) 一、简单选择排序算法思想: 太简单了,还是看代码更快吧! 算法实现 123456789void sort(int A[],int n){ for(int i = 0;i < n-1 ;i++){ min = i...

前言交换排序主要分为:冒泡排序和快速排序 思想:将序列中的两个元素关键字进行比较,后交换两个记录在序列中的位置 应用:队伍排队 一、冒泡排序算法思想: 初始化下标为最后第一个,从后往前(或从前往后)两两比较相邻的元素,若(A[i-1]>A[i]),则进行交换 下标往前移动 模拟实现: - - - - - - - 49 13 13 13 13 13 13 38 ...

前言插入排序主要分为:直接插入排序、折半插入排序、希尔排序 思想:每步将一个待排序对象与前面已排序序列进行比较并插入到适当的位置上。 应用:打扑克牌、打麻将时你所用到的排序方法 一、直接插入排序算法思想: 当存在一个待排序表,$L[1…n]$,某状态下: 有序序列$L[1…i-1]$ $L[i]$ 无序序列$L[i+1…n]$ 查找$L[i]$在$L[1…i-1]$中的插入位...

框架排序分为内部排序和外部排序 内部排序 插入排序 1.直接插入排序 2.折半插入排序 3.希尔排序 交换排序 1.冒泡排序 2.快速排序 选择排序 1.简单选择排序 2.堆排序 归并排序 基数排序 外部排序 多路归并排序 简解该章节起,会对数据结构的排序进行一系列的总结和磨合,细节如下 序号 栏目 1 插入排序 2 交换排序 3 选择排序 ...