@[TOC](算法选最大最小问题)# 蛮力算法顺序比较,选出最大的max;顺序比较,在剩余的数组中选出最小的min;时间复杂度为(最坏情况下):W(n) = n - 1 + n - 2 = 2n - 3;# 分治法## 思路1、将数组L从中间划分为两个子数组L1和L22、递归的在L1中求最大max1 ...
分类:
编程语言 时间:
2018-11-11 13:48:28
阅读次数:
146
一、题目 1、审题 2、分析 判断一个数组中是否有重复的元素 二、解答 1、思路: 方法一、 先排序,在判断 方法二、 使用优先队列 PriorityQueue 对数组进行排序 方法三、 使用选择排序对数组进行排序,在判断。 注意: 为了提高选择排序的效率(即避免基本有序时的最坏情况),可以先对数组 ...
分类:
其他好文 时间:
2018-11-03 22:02:47
阅读次数:
147
Write a program to find the node at which the intersection of two singly linked lists begins. For example, the following two linked lists: begin to in ...
分类:
其他好文 时间:
2018-11-01 11:46:37
阅读次数:
95
顺序查找 最简单的从头开始对比查找。 折半查找 要求:有序数组 思想:将n个元素分成大致相同的两半,取中值和值x比较,如果相等则找到,如果值x小于中值,则只在数组的左半部分继续搜索值x;如果值x大于中值,则只在数组右半部分继续搜索值x 复杂度:最坏情况下需要O(logN)时间 代码如下: 哈希查找 ...
分类:
编程语言 时间:
2018-10-30 20:03:59
阅读次数:
214
排序 1、冒泡排序 核心代码 它的思想就是,每一次遍历,往后面添加一个当前最大的元素 算法分析 最好情况:顺序T = O( N ) 最坏情况:逆序 T = O( N2 ) 稳定 2、插入排序 1 #include <iostream> 2 using namespace std; 3 int mai ...
分类:
编程语言 时间:
2018-10-29 12:25:32
阅读次数:
132
Θ2018-10-28 16:53:20 开始写 说明: 首先注解很详细。 最坏情况:Θ(n2) 在数量较少时插入排序速度比归并排序快,但超过某个临界值时归并排序远远超过插入排序 关于插入排序以后还会补充 谢谢、Thank you、Salamat Do(撒拉玛特朵)、あリがCám o*n(嘉蒙)とゥ ...
分类:
编程语言 时间:
2018-10-28 19:29:49
阅读次数:
197
2.1.19希尔排序的最坏情况。用1到100构造一个含有100个元素的数组并用希尔排序和递增序列1、4 、13 、40对其排序,使比较的次数尽可能多。非常困难的问题。下面只是目前找到的一个比较次数最多的排列。由于没有严格的数学证明,所以不能算是最后的结果。只是阶段性结果的记录。100,92,84,7 ...
分类:
编程语言 时间:
2018-10-27 10:27:23
阅读次数:
211
一、复杂度分析的4个概念1.最坏情况时间复杂度:代码在最理想情况下执行的时间复杂度。2.最好情况时间复杂度:代码在最坏情况下执行的时间复杂度。3.平均时间复杂度:用代码在所有情况下执行的次数的加权平均值表示。4.均摊时间复杂度:在代码执行的所有复杂度情况中绝大部分是低级别的复杂度,个别情况是高级别复杂度且发生具有时序关系时,可以将个别高级别复杂度均摊到低级别复杂度上。基本上均摊结果就等于低级别复杂
分类:
其他好文 时间:
2018-10-21 20:38:39
阅读次数:
157
一、对二分法的理解 基本思想:假设数据是按升序排序的,对于给定值x,从序列的中间位置开始比较,如果当前位置值等于x,则查找成功;若x小于当前位置值,则在数列的左半段中查找;若x大于当前位置值则在数列的右半段中继续查找,直到找到为止。 时间复杂度: 最好情况:1次 最坏情况:O(log n)次 感想: ...
分类:
其他好文 时间:
2018-10-21 17:45:20
阅读次数:
146
一. 二分法思想 1. 要求 二分法要求线性表必须采用顺序存储结构,表中元素要按关键字有序排列。 2. 时间复杂度及分析体会 最好情况:1次 最坏情况:O(log n) 这种算法是一种典型的分治的策略,并且这种算法很利于理解,它利用了元素之间的次序关系。相对顺序查找这种方法的效率较高,它能在大多数的 ...
分类:
其他好文 时间:
2018-10-18 18:52:33
阅读次数:
180