数据结构
学会编程相当于会砌猪圈的泥瓦匠,学完数据结构就会盖个双层小楼啦~ 同时还可以一窥构筑摩天大厦的奇门武功! 欢迎勤奋的小白活泼乱入!十周修炼,得入门径,一代大侠,从此出发 —— 快来吧~ ^_^
点点滴滴25
菜鸡
展开
-
数据结构 计数排序(Counting Sort) 详解 附C++代码实现:
目录简介:算法描述:代码实现:总结:简介:计数排序是一种非比较类排序算法,稳定的算法,时间、空间复杂度为o(n+k)算法描述:找出待排序的数组中最大和最小的元素; 统计数组中每个值为i的元素出现的次数,存入数组C的第i项; 对所有的计数累加(从C中的第一个元素开始,每一项和前一项相加); 反向填充目标数组:将每个元素i放在新数组的第C(i)项,每放...原创 2019-03-03 22:47:24 · 7159 阅读 · 0 评论 -
数据结构 堆排序(Heap Sort) 详解 附C++代码实现:
目录简介:算法描述:代码实现:总结:简介:堆排序是利用堆这种数据结构所设计的排序算法,是一种近似于完全二叉树。分为大顶堆和小顶堆。时间复杂度为:o(nlog2(n)),不稳定。算法描述:知识储备:一般都用数组来表示堆,i结点的父结点下标就为(i – 1) / 2。它的左右子结点下标分别为2 * i + 1和2 * i + 2。如第0个结点左右子结点下标分别为1...原创 2019-03-03 22:38:56 · 5978 阅读 · 0 评论 -
数据结构 快速排序(Quick Sort) 详解 附C++代码实现:
目录简介:算法描述:代码实现:总结:简介:快速排序是C.R.A.Hoare于1962年提出的一种划分交换排序。它采用了一种分治的策略,通常称其为分治法(Divide-and-ConquerMethod)。不稳定,时间复杂度和空间复杂度都是O(N*logN)。算法描述:该方法的基本思想是:1.先从数列中取出一个数作为基准数。2.分区过程,将比这个数大的数...原创 2019-03-03 18:14:59 · 7510 阅读 · 0 评论 -
数据结构 归并排序(Merge Sort) 详解 附C++代码实现:
目录简介:算法描述:代码实现:总结:简介:归并排序是典型的递归思想的应用,将一个序列分为两个子序列,叫做二路归并,是一种稳定的排序算法,时间复杂度为:O(nlogn)算法描述:把长度为n的输入序列分成两个长度为n/2的子序列; 对这两个子序列分别采用归并排序; 将两个排序好的子序列合并成一个最终的排序序列。代码实现:#include&l...原创 2019-03-03 18:01:36 · 7485 阅读 · 2 评论 -
数据结构 希尔排序(ShellSort) 详解 附C++代码实现:
目录简介:算法描述:代码实现:总结一下:简介:1959年Shell发明,第一个突破O(n2)的排序算法,是简单插入排序的改进版。它与插入排序的不同之处在于,它会优先比较距离较远的元素。希尔排序又叫缩小增量排序。算法描述:先将整个待排序的记录序列分割成为若干子序列分别进行直接插入排序,具体算法描述:选择一个增量序列t1,t2,…,tk,其中ti>...原创 2019-03-03 17:47:35 · 7030 阅读 · 0 评论 -
数据结构 插入排序(InsertionSort Sort) 详解 附C++代码实现:
目录简介:算法描述:代码实现:总结:简介:是一种简单直观的排序算法。它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。时间复杂度为o(n^2),是一种稳定的排序算法,比较类排序算法算法描述:从第一个元素开始,该元素可以认为已经被排序; 取出下一个元素,在已经排序的元素序列中从后向前扫描; 如果该元素(已排序...原创 2019-03-03 17:04:45 · 5479 阅读 · 1 评论 -
数据结构 选择排序(SelectionSort) 详解 附C++代码实现:
目录简介:算法描述:代码实现:总结:简介:选择排序稳定,时间复杂度为:o(n^2),是比较类算法。它的工作原理:首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。算法描述:将数列分为有序区和无序区。初始状态:无序区为R[1.....原创 2019-03-03 16:55:32 · 6977 阅读 · 0 评论 -
数据结构 冒泡排序(BubbleSort) 详解 附C++代码实现:
目录冒泡简介:算法描述:代码实现:总结一下:冒泡简介:如果你是小白,我告诉你,冒泡很简单。冒泡是比较类排序算法,时间复杂度最好、最坏、平均都是o(n^2),通过一次次比较找到一个最大或最小的数,确定该数在数组中的位置,就相当于一个筛子,一次捞出一个最值。算法描述:比较相邻的元素。如果第一个比第二个大,就交换它们两个; 对每一对相邻元素作同样的工作,从...原创 2019-03-03 16:43:15 · 6171 阅读 · 1 评论 -
数据结构 基数排序(Radix Sort) 详解 附C++代码实现:
目录简介:图解:C++代码实现:总结:简介:基数排序的发明可以追溯到1887年赫尔曼何乐礼在打孔卡片制表机上的贡献。基数排序是按照低位先排序,然后收集;再按照高位排序,然后再收集;依次类推,直到最高位。按低位优先级排序或按高位优先级排序取决于自己兴趣,下面的代码按低位优先。算法简述:1.取得数组中最大的数的位数max_bit2.分散:将数组的所有数按...原创 2019-03-03 16:24:19 · 7028 阅读 · 1 评论