数据结构与算法
文章平均质量分 83
clw_18
都挺好
展开
-
快速排序总结
快速排序是冒泡排序的升级,都属于交换排序类,即通过不断比较和移动交换来实现排序。冒泡排序的实现是两两比较相邻的关键字,然后交换反序的记录,而快速排序的实现增大了记录的比较和移动的距离,将关键字较大的记录从前面直接移动到后面,关键字较小的记录从后面移动到前面,从而减小了比较次数和移动交换次数。首先,我们看一下冒泡排序的实现1、冒泡排序基本思想:两两比较相邻记录的关键字,如果反序就交换记录,直到没有反序记录为止。实现代码为:void BubbleSort(vector<int>* L){原创 2021-02-25 14:58:59 · 715 阅读 · 0 评论 -
海量数据的处理问题
在实际中,经常会碰到对大量数据的处理问题,这就需要合理地应用数据结构和算法,从而提升数据处理效率。以下归纳总结几种海量数据处理的常见问题。1、如何在1亿个数据中找到最大的100个数错误想法:对数据进行快速排序,最佳时间复杂度为O(nlogn),但需要一次性将所有数据读入内存,导致内存占用过多且全部排序没必要。正确方法:分冶法+最小堆排序原理:将数据划分为100块,将数据块分配给多台服务器,每个cpu处理一块数据,采用最小堆排序,读入前100个数来建立大小为100的最小堆(建堆的时间复杂度为O(mlo原创 2021-02-24 16:41:54 · 696 阅读 · 0 评论 -
哈希表总结
为什么要有哈希表(1)顺序表中,要查找某个值value的记录,需要遍历顺序表,直到找到该值的位置,该方法的时间复杂度为O(k),0<k<=n。(2)有序表中采用二分法查找、红黑树中数据查找的时间复杂度均为O(logn)。这些常见的方法中,查找一个数都要通过比较得出,那么,是否能够直接通过关键字key找到元素存储的位置,令其时间复杂度为O(1)?为了满足快速查找的需求,哈希表就诞生了。哈希表定义在了解哈希表之前,我们需要先知道哈希函数。所谓哈希函数(也成为散列函数),就是关键字与存储位置原创 2021-02-04 20:31:46 · 458 阅读 · 1 评论