堆 定义:什么是堆? 从堆的定义上我们可以看出,堆在物理结构上是一维数组,逻辑结构上,可以把堆理解为一棵完全二叉树,因为堆满足ki<=k2i+1,ki<=k2i+2(ki>=k2i+1,ki>=k2i+2),而我们了解对于完全二叉树,父结点和孩子结点存储在一维数组中有如下的下标关系: leftchild=parent2+1 rightchild=parent2+2=leftchild+1 与堆的下标关系是完全吻合的,所以在逻辑上我们可以把堆理解为一颗完全二叉树。 给定一个任意的一维数组,在逻辑上,我们可以将其理解为一颗完全二叉树。 此时一维数组只是一颗...

排序: 通过排序,实现一串记录按照某一关键字大小按照递增或递减的顺序排列。 排序在日常生活中有很多应用,例如我们点外卖时,可以根据好评数量,价格区间,受欢迎程度选择外卖,这些功能的实现都离不开排序,今天向大家分享几种数据结构中的常见的排序算法。 冒泡排序 选择排序 插入排序 希尔排序 快速排序 堆排序 归并排序 由于内容较多,所以我会把排序的部分分为好几篇文章分享给大家,今天先和大家分享前三个--冒泡排序、选择排序、插入排序。 1.冒泡排序 此种排序方法的原理正如其名,通过冒泡将最大或者最小的数”冒“至最后,实现记录的有序。以升序排列为例。 思路:n个待排的数,从第一个数和第二个数...

引言: 我们在创建一个局部变量时,通过下列定义语句向内存申请空间,内存在栈区为变量开辟相应的空间。 intval=10;//在内存中栈区中开辟大小为4Byte大小的空间 chararray[10]={0};//在内存中栈区中开辟大小为10Byte大小的连续的空间 ... 上述方式开辟空间的特点: 空间开辟大小是固定的,开辟好后空间大小不能再修改。 灵活性差,以数组开辟空间为例,必须明确给出数组大小,开辟好后大小固定,不能依据元素个数对空间大小做出修改。 因此,基于这种静态的开辟内存空间的方式,今天想向大家介绍一种灵活的动态申请内存空间的方式--通过动态内存函数实现。 动态内存函数...

关注 更多

空空如也 ~ ~

粉丝 更多

空空如也 ~ ~