- 博客(8)
- 收藏
- 关注
原创 常见排序算法
适合关键字较多的情况,例如在1亿个数中选出前100个最大值,首先使用一个大小为100的数组,读入前100个数,然后建立小根堆,而后依次读入余下的数,若小于堆顶则舍弃,否则用该数取代堆顶,并且重新调整堆。基本思想:从前往后,或者从后往前两两比较相邻元素的值,若为逆序(A[i-1] > A[i])则交换,直到序列比较完。基本思想是:每一趟(比如第i趟)在后面n-i+1个待排序的元素中选取关键字最小的元素,作为有序子序列的第i个元素。先折半查找出元素的待插入位置,然后统一的移动待插入位置之后的所有元素。
2024-12-16 00:30:52
875
原创 常见查找算法
开发定址法:Hi = (H(key) + di) % m (删除都是逻辑删除,因为删除一个会截断后面的查找元素地址,也有坏处,需要定期维护)二叉判定树有n个非叶节点时,就有N+1个叶节点(失败节点),而且判定树是平衡二叉树。,k <= m/2 且, m 必须是可以表示成4k + 3的素数。对于有n个元素的表,给定值key与表中第i个元素相等,即定位第i个元素时,要进行n-i+1次比较。查找不成功时,与表中关键字的对比次数是n+1次 ASL不成功 = n+1;满足1,2的为静态查找表。拉链法(默认头插法)
2024-12-14 00:18:06
550
原创 常见排序算法
先折半查找出元素的待插入位置,然后统一的移动待插入位置之后的所有元素。将待排序表分割成若干个子表,每个元素在原表中间隔一个增量。适合于数据量不大,移动次数依赖于待排序表的初始状态,稳定的排序算法。基本思想就是讲一个待排序的关键字按大小插入前面已排好的子序列。排序过程中,向有序表中逐个插入元素的操作进行了n-1趟。d1,d2,且d2 < d1,一直到dt = 1。最坏情况:逆序的,此时时间复杂度为。最好情况:有序的,时间复杂度为常数。外部排序是内外存不断移动的排序。内部排序是在内存中排序。
2024-12-14 00:17:28
738
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人