数据结构学习
lm_ylj
这个作者很懒,什么都没留下…
展开
-
数据结构学习--希尔排序
希尔排序 算法描述:希尔排序是插入排序的一种改进,主要是为了解决当较小的数据大都出现在数组后面时导致的移动次数明显增多的问题,思想是使用一个不断缩小的增量gap将数组元素分组,在每个分组内部先进行插入排序,当gap减少到1时整个数组元素分在一组,最后进行一次插入排序,整个排序过程结束。 算法时间复杂度:最好情况:当数据已经排好序的情况下:O(N^1.3);最坏情况:O(N^2);平均情况:O(NlogN) 算法空间复杂度:O(1) 算法...原创 2020-11-20 00:00:21 · 8336 阅读 · 5 评论 -
数据结构学习--插入排序
插入排序 算法描述:插入排序的思想是假设待排序元素前面的元素已经是排好序的状态,然后从右至左找到该元素插入的位置,在寻找插入点的过程中将该元素前面的元素逐个平移到后一个位置,避免了交换。 算法时间复杂度:最好情况:当数据以及排好序的情况下:O(N);最坏情况:O(N^2);平均情况:O(N^2) 算法空间复杂度:O(1) 算法稳定性:算法不存在前面元素与后面元素的交换,采用逐个平移的方式,因此该算法是稳定的。 算法实现...原创 2020-11-15 21:06:39 · 175 阅读 · 0 评论 -
数据结构学习--选择排序
选择排序 算法描述:选择排序的思想是初始化最小索引为0,每趟遍历选出最小的元素与最小索引的值进行交换,然后是最小索引加1,第二趟遍历出剩下元素中最小的元素,继续与当前索引的元素交换,依次类推,直到所有元素排列完成。相比于冒泡排序,选择排序的优点在于每次遍历只需要交换1次。 算法时间复杂度:最好情况:O(N^2);最坏情况:O(N^2);平均情况:O(N^2) 算法空间复杂度:O(1) 算法稳定性:由于选择排序会直接将前面的元素与后面较小...原创 2020-11-15 18:00:01 · 96 阅读 · 0 评论 -
数据结构学习--冒泡排序
冒泡排序 算法描述:冒泡排序的思想是在每趟交换的过程,比较相邻的两个元素,将值大的放在右边,即将当前比较过程中的最大值移动到右边,然后将比较过程的最大索引减1,继续第二趟排序,将剩余元素中的最大值移动到右边,依次类推,直到发现有一趟比较过程中没有发生交换,则说明数组已经排好序了。 算法时间复杂度:最好情况:当数组已经是排好序的情况下,时间复杂度O(N);最坏情况:O(N^2);平均情况:O(N^2) 算法稳定性:由于冒泡排序可以保证数组左边的值必须大于右...原创 2020-11-15 16:24:13 · 113 阅读 · 0 评论 -
数据结构学习--稀疏数组
稀疏数组 当二维数组中的有效数据较小时,为了减少保存该数组所占用的内存空间,通常将原始数组转换为稀疏数组进行存储,一般流程为:二维数组->稀疏数组->序列化到硬盘->反序列化到内存->读取稀疏数组->读取二维数组。 二维数组转稀疏数组的过程: 1.遍历原始二维数组,得到有效数据的个数sum; 2.根据sum创建稀疏数组sparseArr,该稀疏数组有sum+1行,3列,其中第一行记录原始数组的大小和有效值个数,从第二行开始每列记录该数...原创 2020-11-14 20:55:20 · 108 阅读 · 0 评论