【C++】类和对象(上) 提示:上面结构体定义中,C++更喜欢用 class来代替 struct//类体,由成员函数和成员变量组成//注意,后面结尾这里有分号一、声明和定义全放在类体中。成员函数名前需要加类名::.h文件//类//成员函数和成员变量分别定义//成员函数//成员变量int* a;//用来初始化的临时变量int size;//栈的大小,也即是栈中的数据个数//栈容量.cpp文件void Stack :: Init(int n = 4) {//栈的初始化。
【C语言】借助队列来实现基数排序 基数排序(radix sort)属于“分配式排序”(distribution sort),又称“桶子法”(bucket sort)或bin sort,顾名思义,它是透过键值的部份资讯,将要排序的至某些“桶”中,藉以达到排序的作用,基数排序法是属于稳定性的排序,其为O (nlog(r)m),其中r为所采取的基数,而m为堆数,在某些时候,基数排序法的效率高于其它的稳定性排序法。
【C++】namespace 和 << >>的使用介绍。 /<< 是流插入运算符,与C语言中的printf()函数作用类似。" << endl;//其中,endl的作用 ""换行符作用一致。" << "";//cout和cin能自动识别类型int x = 2;// >> 流提取,作用与C语言中的scanf类似。return 0;
【C语言-数据结构与算法】归并排序(不使用分治递归实现) 其的分治递归就是先把一组数据分成两组,然后分治递归不停拆分为两组,直到其为的时候,并同时将其数据归并一下。因为是从将不停缩小,缩小到为空或只剩一个数据时回溯归并。那么我们可不可以就从分组,并且。这样,等到分组达到最大时,也就刚好把整个数据都归并了一遍了。
【C语言-数据结构】归并排序(使用分治递归来实现) 将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列区间有序。然后,利用分治递归法,紧接着将这分开的两组以同样的以中间值为界的方法来划分为两组,一直到最后只剩一个数或为空的时候停下来。停下来的这时,先将数据排序一下,也就是将这两组数据归并一下,然后将归并好的数据拷贝回原数据中去,最后回溯就ok了。到这里左半区间就变得有序了,同样的,右半区间也可以一样的实现。到这,也就完成了归并排序的讲解了。首先,先将一组数据分成两组,这里可以以中间值为界来划分。//分治递归,让子区间变得有序。
【C语言--数据结构】关于快速排序的一些补充及优化和将快速排序递归实现改为非递归实现 这时候,如果我们呢还想接着用快排来使其整体全部变为有序的话,如果还是选用最右边或最左边那个数据为KEY(假如刚好为最大值或最小值),这时使用快排可能会失效(栈溢出,递归调用太多次了,递归和为:N + N -1 + N -2 + ....1,所以这时的时间复杂度为O(N^2) )。其实我们在使用快排递归调用来使其形成左小右大(左大右小)的过程中,假如在其递归排序到了一个相对较小的区间处的时候,我们这时其实没有必要再对其进行递归调用排序了,直接用插入排序算法不是就可以节省下递归调用的时间了么?
【C语言】QuickSort---快速排序 如果将最左边的值作为基准值(KEY)后,让left先走,那么相遇时的值会比KEY大,这时,如果交换KEY的值和下标,则。,我们就实现了KEY这个基准值的左边都比它要小,它的右边都比其要大了,也就是左小右大了。了吧,然后KEY的左子序列是不是都是比它小,右子序列都是比它大的。),当我们将最左边的值作为基准值时,就得让right先走了。这样,在其完成之后,其实也就是递归完成后,它的整体就成为了。,并且同时将KEY的下标也一并与相遇的数据。时,先将其共同指向的值和KEY指向的。的数据的时候停下来。
【C语言】Select排序 选择排序,就是将从一组数据的最左边开始(最右也行),然后向右(左)遍历一遍,在找到最大(最小)的那个数据的时候,将其放在最初的位置(末尾),然后再回到其后一个(前一个)位置,再重新遍历,接着找出最大(最小).......把全部的数都遍历了之后,其数据也就有序了。
【C语言】判断一颗二叉树是否是完全二叉树 这就是完全二叉树的定义。一颗二叉树,它的每一层的节点都必须是全满的,不能有空。且同时,最后一层的节点也必须从左至右是连续存在的。那么,这颗树就是一颗完全二叉树。(满二叉树是特殊的完全二叉树)
【C语言】关于二叉树的算法题 总体思路:先判断根节点是否为空,如果不为空的话,那就将它的值用一个临时变量val来存储起来。同时,将其val作为基准值,利用前序遍历来遍历一遍整个二叉树,看是否有值与其不同。一旦有一个不同,则将全局变量的值改变一下。最后,再来判断一下全局变量的值是否改变了就行。总体思想:先判断是否为空树。判断完成之后,将其根节点指向的值用一个临时变量保存一下。再分别用两个临时指针变量来存储其左右节点的地址,并将其根节点的值分别于左右子树遍历判断是否相等一下。