开发工具:
文件大小: 740kb
下载次数: 0
上传时间: 2020-06-19
详细说明:数据结构与算法
排序算法
内排序
八大基础排序
选择排序
简单选择排序
思想
每次选择最大的数插入到末尾中
做法
外层for循环控制次数
内层for循环找出最大的值的角标
找出最大角标后,进行交换
优化思路
同时获取最大值和最小值,然后分别插入数组的首部和尾部
堆排序
思想
使用大顶堆的思想来排序,每次建堆后交换
做法
总体:建堆-替换
建堆
只要左子树或右子树大于当前根节点,则替换
替换后会导致下面的子树发生了变化,因此同样需要进行比较,直至各个节点实现父>子这么一个条件(递归)
交换排序
冒泡排序
思想
每次俩俩交换,将最大值交换到末尾
做法
外层for控制循环次数
内层for控制比较次数
每次循环之后,比较次数都会减少一次
优化思路
如果一趟排序后没有发生位置变化,那么此时就是有序了
快速排序
思想
每次将比支点小的放在支点左边,比支点大的放在支点右边
做法
外循环while只要i和j不碰撞查找
内层两个while循环分别查找出比支点小的和比支点大的角标
如果i<=j满足条件,就交换
一趟排序后,支点的左边都比支点小,支点右边都比支点大
只要满足L0的条件查找出要插入的何时位置
退出内层while循环后就找到了合适的位置插入
优化思路
二分查找插入,找合适位置的时候使用二分查找算法
希尔排序
思想
用增量来将数组进行分隔,直到增量为1。底层干的还是插入排序干的活
做法
最外层for外循环控制增量的数量,每次/2
第二层for循环控制每次增量那组开始进行插入排序,直至完毕
第三层while循环找到要插入到哪个位置
归并排序
思想
将两个已排好序的数组合并成一个有序的数组
做法
递归拆分出两个有序的数组,从mid的位置开始拆分,递归出口:只有一个值的时候就不用拆分了
合并两个有序的数据
分别往两个数组填充已有序的数据
比较两个数组的值谁小,谁小就放到我们的数组中
如果比较完之后还有剩余的数据,那么用while直接添加到我们的总数组中
优化思路
当递归到规模足够小时,利用插入排序
归并前判断一下是否还有必要归并
只在排序前开辟一次空间
基数(桶)排序
思想
分配,回收(分配到不同的位置上,然后回收)..不断分配..回收来进行排序,直到有序
做法
分配一个[array.length][10列]的二维数组来装我们的元素
最外层for循环控制要分配和回收的次数(根据最大值)
将元素的个、十、百位依次放到桶子上(第一次就是放个位,第二次放十位)
依据每列回收桶子,两个for循环
外排序
查找算法
二分查找
分块查找
哈希查找
贪心算法
求最小生成树的Prim算法和Kruskal算法
爬山问题
回溯算法
n皇后问题
动态规划Dynamic Planning
应用
求最长公共子序列LCS
矩阵连乘问题
爬楼梯问题
找零问题
0-1背包问题
分治算法Divide and Conquer
应用:归并排序
其它
Rabin fingerprints 文件指纹算法
BitMap 位图算法
BloomFilter 布隆过
(系统自动生成,下载前可以参看下载内容)
下载文件列表
相关说明
- 本站资源为会员上传分享交流与学习,如有侵犯您的权益,请联系我们删除.
- 本站是交换下载平台,提供交流渠道,下载内容来自于网络,除下载问题外,其它问题请自行百度。
- 本站已设置防盗链,请勿用迅雷、QQ旋风等多线程下载软件下载资源,下载后用WinRAR最新版进行解压.
- 如果您发现内容无法下载,请稍后再次尝试;或者到消费记录里找到下载记录反馈给我们.
- 下载后发现下载的内容跟说明不相乎,请到消费记录里找到下载记录反馈给我们,经确认后退回积分.
- 如下载前有疑问,可以通过点击"提供者"的名字,查看对方的联系方式,联系对方咨询.