
算法学习
文章平均质量分 75
godaa
欢迎大佬们找小弟交流~~~
展开
-
堆排序、桶排序思想以及比较器的运用
堆排序 堆结构 说到堆排序,首先得了解堆结构。堆结构实质上是一个完全二叉树的结构,但是可以用数组来模拟,例如一个长度为n的数组(数组下标0~n-1),0位置可以当做二叉树的根,对于下标为i的元素,其父节点下标为(i-1)/2向下取整,左孩子下标为i*2+1,右孩子下标为i*2+2。一般为了方便管理堆的元素,有一个变量为heapSize,表示堆中元素的个数,对应下标就是0~heapSize-1,所有超出这个下标范围的元素就不归堆来管理了。 一个堆可以分为大根堆和小根堆,大根堆顾名思义就是对于一个堆来.原创 2022-02-18 15:19:51 · 580 阅读 · 0 评论 -
归并排序,快速排序思想以及主方法的运用
1. 归并排序 基本思想:采用了分治再合并的思想,具体而言就是对于一个待排序数组,首先切一半,对得到的左右两组数组重复上述操作,直到分到不能再分,最后自底向上的左右两两进行合并操作,合并操作是对左右两个子数组依次进行取小操作放到一个新数组中,最后新数组拷贝到旧数组,表示一次合并结束。全部合并结束即归并结束,至此整个数组有序。 时间复杂度和空间复杂度 归并排序不同于简单、冒泡和插入排序。后面三者进行了大量的重复比较操作,而归并排序每次进行比较操作(合并)都是有利于下一步的合并(不会作无用重复的比较),所以归原创 2022-02-14 13:12:10 · 436 阅读 · 0 评论 -
简单,冒泡,插入排序基本思想以及位运算和对数器的运用
1. 简单排序 基本思想 每次选出最小的数放入合适的位置,也就是说对于一个待排序数组,首先从0-n-1下标中选出最小的放在0位置上,再从1-n-1中选出最小的放入到1位置上,依此类推直到最后只剩下最后一个待选择元素,说明排序完毕。 时间复杂度和空间复杂度 由于选择排序和数况没关系,第一次要从n个元素中选出最小的,第二次要从n-1个元素中选出最小的,第三次…将上述操作看作常数操作,那么总操作数为:N+N-1+N-2+…,可知是一个等差数列,那么时间复杂度为O(n²) 由于没有额外开数组,所以空间复杂度为O(原创 2022-02-10 14:25:55 · 822 阅读 · 0 评论 -
ccf Z字形扫描(学习思路)
ccf Z字形扫描 问题描述 在图像编码的算法中,需要将一个给定的方形矩阵进行Z字形扫描(Zigzag Scan)。给定一个n×n的矩阵,Z字形扫描的过程如下图所示: 对于下面的4×4的矩阵, 1 5 3 9 3 7 5 6 9 4 6 4 7 3 1 3 对其进行Z字形扫描后得到长度为16的序列: 1 5 3 9 7 3 9 5 4 7 3 6 6 4 1 3 请实现一个Z字形扫描的程序,给定一个n×n的矩阵,输出对这个矩阵进行Z字形扫描的结果。 输入格式 输入的转载 2021-03-04 17:55:44 · 449 阅读 · 1 评论