第三章 这些算法很有用 3.3 查找 1.顺序查找 从第一个开始逐个比较,知道找出与给定关键字相同的数为止。 2.二分查找 二分查找是一种效率较高的方法。 *二分查找一定要在排序后进行 *通过不断找中点进行判断待找的数字在左边还是右边 3.4 Java工具类中算法的实现 对于前面的一些算法,Java ...
分类:
编程语言 时间:
2020-07-11 19:33:12
阅读次数:
68
排序 插入排序: 直接插入排序 时间复杂度O(n^2)(比较n^2/2+移动n^2/2) 折半插入排序:每次通过折半查找法找到插入的位置。这样会比直接插入中使用的顺序查找法快 但时间复杂度仍为O(n^2) 希尔排序:先将待排序列分组,对每组进行直接插入排序,增加数据量重新分组。 是不稳定的排序 交换 ...
分类:
其他好文 时间:
2020-07-11 17:05:56
阅读次数:
68
希尔排序 前面我们说过了插入排序,它是三种基本排序中最常用的一种排序,具有排序稳定,空间复杂度低,而且在样本小且基本有序时效率比较高,该篇讲述的希尔排序是对插入排序的一种优化排序,在希尔排序开始阶段,通过增量的方式使排序的样本小化,在希尔排序的最后阶段蜕变成插入排序,但可以完美实现样本基本有序,从而 ...
分类:
编程语言 时间:
2020-07-06 19:37:22
阅读次数:
41
101. 对称二叉树 描述: 思路: 递归。考虑左子树的最右节点和右子树的最左节点对称。 102. 二叉树的层序遍历 描述: 思路:递归。维护一个List<List<Node>> (List.get(迭代次数).add(xxxx)) 103. 二叉树的锯齿形层次遍历 描述: 思路:递归。先右再左。 ...
分类:
其他好文 时间:
2020-07-05 22:45:46
阅读次数:
58
1.介绍 希尔排序是希尔(Donald Shell)于1959年提出的一种排序算法。希尔排序也是一种插入排序,它是简单插入排序经过改进之后的一个更高效的版本,也称为缩小增量排序。 2.基本思想 希尔排序是把记录按下标的一定增量分组,对每组使用直接插入排序算法排序;随着增量逐渐减少,每组包含的关键词越 ...
分类:
编程语言 时间:
2020-07-04 15:15:58
阅读次数:
66
动态规划 O(NlogN)结构 在插入排序时,我们倘若用二分查找的形式去寻找插入位置,看似很快,但是却要移动后面的位置,使得这个二分得不偿失 但,如果只是替换某个值呢? 在动态规划的很多题目里面,我们正是要维护这样的一个决策单调序列, 进行更新采取的方案正是替换 注意,这样处理并不能记录opt答案对 ...
分类:
其他好文 时间:
2020-07-02 10:47:23
阅读次数:
54
稳定性:不稳定排序 1.过程介绍 希尔排序,又名递减增量排序算法,是一种非稳定的更高效的插入排序,在对几乎已经排好序的数据操作时,效率极高,即可以达到线性排序的效率,直接插入排序整体来说是低效的,因为插入排序每次只能将数据移动一位; 希尔排序的基本思想是:先将整个待排序的记录序列分割成为若干子序列分 ...
分类:
编程语言 时间:
2020-07-01 15:47:54
阅读次数:
57
一、简单排序 1.1:直接插入排序:在插入第i个记录时,R1,R2,...Ri-1,Ri已经排好序,这时将关键字ki依次与关键字ki-1, ki-2,...,k1进行比较,从而找到应该插入的位置,然后将ki插入,插入位置及其后面的记录依次向后移。 简单地理解就是从后找起,找到合适的位置插入,然后不断 ...
分类:
编程语言 时间:
2020-06-30 22:09:38
阅读次数:
71
插入排序之直接插入排序 博客说明 文章所涉及的资料来自互联网整理和个人总结,意在于个人学习和经验汇总,如有什么地方侵权,请联系本人删除,谢谢! 插入排序法思想 插入排序(Insertion Sorting)的基本思想是:把n个待排序的元素看成为一个有序表和一个无序表,开始时有序表中只包含一个元素,无 ...
分类:
编程语言 时间:
2020-06-27 00:15:13
阅读次数:
54
考研数据结构——排序 直冒简希,快堆并基 直接插入排序 算法思路:将待排序的关键字与已经排好的部分有序序列的中关键字从后往前进行比较,插入到合适位置,直至所有关键字都被插入到有序序列中 void insertSort(int R[],int n)//数组元素个数 { int i,j; int tem ...
分类:
编程语言 时间:
2020-06-26 13:05:39
阅读次数:
66