![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
文章平均质量分 95
pop_m
初入计算机行业,请多关照
展开
-
复杂度
时间复杂度和空间复杂度 为什么要有时间复杂度和空间复杂度?它们能干什么?        我们都知道,一台计算机是有固定的内存空间和计算速度的,如果这里有两个程序,一个只需要2KB的内存空间,并且只需要cpu计算100次就能达到目的,而另一个需要5KB的内存空间,并且需要CPU计算1000次才能得出结果,原创 2018-08-14 13:28:31 · 537 阅读 · 0 评论 -
哈希(hash、散列表)
哈希的概念 可以认为哈希有着数组的思想,它将所有的数据段拼成一个数组(顺序表)进行存储,通过哈希函数,可以基本上以O(1)的时间复杂度来查找和存储数据。 哈希函数 通过数据段中的唯一关键字(key),经过某种算法,得出此数据段在整个哈希数组(顺序表)中的的下标,然后直接取元素即可。 哈希的存储(插入)过程 有数据结构如下: //数据段(key,val...原创 2018-08-06 22:52:08 · 863 阅读 · 0 评论 -
位图和海量数据
位图和海量数据问题 什么是位图? 问题: 有40亿个数,未排序,设计程序能很快的判断出一个个数据在不在其中。 如果直接将者40亿个数放在内存中那么需要 40亿*4字节 = 160亿字节,大概是2^34字节,也就是2^4GB空间,16G内存,抱歉,我的电脑只有8G内存,那此时应该怎么办呢? 思考:我们会发现我们只是为了表示在与不在,那我们为什么要这么大的空间呢...原创 2018-08-11 10:27:11 · 636 阅读 · 0 评论 -
排序(上)---插排、希尔、堆排
排序(上)—-插排、希尔、堆排 插入排序 给每个新增的数在已有的数列中找到合适的位置,然后插入进去 例如一个由小到大的排序: 原数组为: 4, 5, 2, 9, 3, 6, 8, 7 现在我们有了一个数组,我们可以假装现在排过序的只有第一个数,也就是说已有序列是第一个数(i和j是下标,key代表当前要插入的数,j代表当前已经插入到了第几个数,i是动态的用来与...原创 2018-09-01 22:33:49 · 788 阅读 · 0 评论 -
排序(中)---选择、冒泡
排序(中)—选择、冒泡 选择排序 简单来说就是众神归位法,每一趟排序都会选出一个最大的和一个最小的数据,并放在该放的位置上。 由小到大进行排序: 遍历整个数据,选出最大的数据(下标),与最后一个下标的数据进行交换,数组的大小减一。 遍历剩余的数据,选出最大的数据(下标),与最后一个剩余数据的最后一个下标的数据进行交换。 直到剩余的数据中只有一个元素,排序完成。 时间复杂度都是...原创 2018-09-01 22:38:08 · 646 阅读 · 0 评论 -
排序(下)---快排、归并
排序(下)—快排、归并 快速排序 采用分治的思想:每次选区一个数作为基准,让整个数据中凡是大于此数的放在此数的右边,小于此数的放在此数的左边,然后进行对此数的两边进行选基准,如上方式的分法,递归下去,直到分出来的数据只有一个元素,或者无元素,停止分支,因为每次分支都会进行调整,所以当分到每个分支中只剩一个数的时候,整组数据就有序了。 首先得定义一个选选基准,并进行一次的分支的方...原创 2018-09-01 22:39:19 · 1661 阅读 · 1 评论