自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

draper__QYT的博客

一个小白程序猿的成长之路

  • 博客(8)
  • 收藏
  • 关注

原创 并查集——路径压缩

关于Rank的优化上文中我们已经对代码进行了几次优化,使得进行连接操作的时候,所形成的数长度尽量短,但同时也存在另一种情况:集合元素多,但是每个元素分别指向根节点,这样就只有两层(举例),那么就应该把这棵树的根节点指向另一棵树的根节点,就出现了所谓的“集合元素多,但是树长度短“的情况,因此,应当首先考虑树的长度,而非树的元素量。

2017-09-25 11:11:50 675

原创 并查集

并查集的具体实现,几次重要优化主要操作:find();unionElements();isConnected();

2017-09-24 19:36:12 176

原创 二分查找法与二分搜索树

使用前提:有序数列 迭代版本:template<typename T>int binarySearch(T arr[],int n,int target){ int l=0,r=n-1; while(l<=r){ int mid=l+(r-l)/2;// int mid=(l+r)/2; 可能会出现溢出 if(a

2017-09-21 16:56:48 392

原创 堆排序实现

Heapify: 对于一个完全二叉树,第一个非叶子节点的索引是完全二叉树的元素个数除2得到的值

2017-09-17 20:39:39 239

原创 堆的思想及实现

最大堆: 1.堆中某个节点的值总是不大于其父节点的值 2.堆总是一棵完全二叉树。完全二叉树:除了最后一层节点,其他层所有的节点个数必须是最大值。最后一层所有的节点必须集中在左侧。二叉堆的数组实现:给每个节点编号,使得每个父节点的左节点序列号为父节点的二倍,右节点的序列号为父节点序列号的二倍加1parent(i) = i/2 left child(i) = 2*i right

2017-09-16 16:28:10 393

原创 (三)几种排序算法的学习总结(快速排序)

快速排序:“二十世纪最伟大的算法” 基础快速排序实现双路快速排序实现三路快速排序实现核心思想:每次从数组中选择一个元素作为基点,之后把该元素移动到排好序时应该所处的位置,使得基点之前的元素都小于它、之后的元素都大于它。之后对小于它、大于它的子数组分别递归进行快速排序 将元素移动到合适位置的函数:Partition

2017-09-16 08:42:30 484

原创 (二)几种排序算法的学习总结(归并排序)

(三)归并排序归并排序核心思想:将数组的元素不断二分(N个元素就有logN个层级),再向上归并(时间复杂度为O(n))(递归)。 途径:开辟一块相同大小的临时空间进行操作,使用三个索引分别表示:归并过程中跟踪的位置(k),两个表示两个子数组当前的元素(left、right),用middle表示中间位置//将arr[l...mid]和arr[mid+1...r]两部分进行归并 template<t

2017-09-14 20:19:04 548

原创 (一)几种排序算法的学习总结(选择排序与插入排序)

几种排序的学习总结(一)选择排序选择排序:在每次循环中找出最小的元素,将其移至开头,第二次找出次小元素,将其移至第二位,以此类推//泛型函数模板template<typename T>void selectionSort(T arr[],int n){//分别存放待排序的数组、数组元素个数 for(int i=0;i<n;i++){ int minIndex=i; /

2017-09-14 15:08:36 660

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除