摘要:
散列表与哈希算法 一,散列表原理(Hash Table) 散列表来源于数组具有 下标随机访问特性 ,理解这点非常重要。可以说散列表是由数组进化来的。将输入的键通过哈希函数映射得出的value作为index去table中查询,这便是散列的思想。 我们了解到为什么散列表的查询复杂度是O(1),因为key 阅读全文
摘要:
LeetCode_300 最长上升子序列 description: 给定一个无序的整数数组nums,找到其中最长上升子序列的长度。 示例: 输入: [10,9,2,5,3,7,101,18] 输出: 4 解释: 最长的上升子序列是 [2,3,7,101],它的长度是 4。 说明: 可能会有多种最长上 阅读全文
摘要:
说一说c++函数指针 c++函数指针是c++函数的重要部分。与数据项相似,函数也有地址。函数的地址是存储其机器代码的内存的起始地址。可以编写将另一个函数的地址作为参数的函数。这样第一个函数能够找到第二个函数。 函数指针的基本知识: 1.获取函数的地址: 获取函数的地址很简单,函数名就是函数的地址。 阅读全文
摘要:
字符串的输入,是学习c++的一个重点,也是一个极富有细节意味的知识点,如果你不了解这些细节,你可能会在写程序时犯错而一脸懵逼不知所措。 与此同时,我们要了解c++缓冲区的概念,程序的输入都建有一个缓冲区。输入的过程大概是这样的,一次输入结束,键盘会向缓冲区存入数据,而相应的读取函数会从缓冲区读取,我 阅读全文
摘要:
c++到底是什么样的语言 在过去的几十年,计算机技术的发展令人吃惊,当前的笔记本电脑的计算速度和存储信息的能力超过了20世纪60年代的大型机。20世纪七十年代,C和Pascal语言引领人们进入结构化编程时代。20世纪80年代,人们见证了一种新编程模式的成长:面向对象编程(OOP)。 20世纪七十年代 阅读全文
摘要:
数据结构——链表 在c++中,数组对应着一个连续存储的内存块,将同类型的元素一个一个地排列起来,是组织数据的很好的方法。声明数组的同时我们需要告诉编译器数组的大小,以便开辟足够大小的内存。但是,在解决实际问题时,元素的个数通常是不确定的,此时该如何声明数组呢?接下来,我将讲一下链表这个数据结构,它很 阅读全文
摘要:
说一说快速排序 快速排序,实际中最常用的一种排序算法,速度快,效率高,在N*logN的同等级算法中效率名列前茅。· 基本思想:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分所有数据要小,然后再按此方法对这两部分数据分别进行快速排序。整个排序过程可以递归进行,以此达到 阅读全文
摘要:
说一说归并排序 归并排序:归并排序(英语:Merge sort,或mergesort),是创建在归并操作上的一种有效的排序算法,效率为O(n log n)。1945年由约翰·冯·诺伊曼首次提出。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用,且各层分治递归可以同时进行 阅读全文
摘要:
说一说插入排序 插入排序的基本操作就是将一个数据插入到已经排序好序的数据中,从而得到一个新的,个数加一的有序数据,算法适用与少量的数据的排序。时间复杂度O(n^2),是稳定的排序算法。 基本思想:每步将一个待排序的记录,按其关键码值的大小插入前面已经排序的文件的适当位置上去,直到全部插入完为止。 原 阅读全文
摘要:
说一说选择排序 选择排序,作为八大经典算法之一,虽不如插入,快速,希尔等排序高效,但其结构简单,思路清晰,适合新手理解算法, 了解排序,适合数据较少时的排序情况。 如下是选择排序的图解原理 如果说冒泡排序是顶向下,那么选择排序就是由底向上了,先解决第一个数,再解决第二个数,依次解决整个数组的排序 如 阅读全文