![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构和算法
不要脸的阿智
not face
展开
-
个人对于八大排序总结(中2)
6.归并排序:基本思想:经典的分治思想。分治法:个人理解的分治思想就是,想要解决一个大的问题,就需要把一个大的问题分解成若干个小的子问题,把每个小的子问题逐个击破,最终就把一个大的问题给解决掉了。介绍了一下什么是分治,那么问题来了,这个问题和归并排序有什么关联呢?归并排序思想:假设把一组数分成俩个部分,每个部分其实都是有序的(从小到大,或者从大到小),然后把每组数的头一个数字相互比...原创 2019-07-12 22:28:46 · 117 阅读 · 0 评论 -
个人对于八大排序总结(中3)
7.计数排序特点:计数排序是非比较排序算法,就是该算法不需要进行比较,所以时间复杂度为O(n+k),该算法速度非常快,是典型的使用空间换取时间的排序算法。基本过程:就是把一串数字全部变成另外一个数组的下标,由于下标是有序顺序,再把数字通过下标的形式还原出来,那就是一串有序的序列。实现具体步骤,把数字变成下标很简单,但是怎么记录这个下标所指的数字是该序列中的数字呢?所以我们需要一个可...原创 2019-07-13 22:07:07 · 119 阅读 · 0 评论 -
个人对于八大排序总结(下)
8.堆排序在介绍堆排序之前先介绍一下什么叫做堆?学过数据结构的同学应该知道什么叫做树!堆就是一颗特殊的树,总是一颗完全二叉树!堆中某个节点的值总是不大于或不小于其父节点的值;小顶堆:根结点最小的堆。大顶堆:根结点最大的堆。堆的操作:最大堆调整:将堆的末端子节点作调整,使得子节点永远小于父节点创建大顶堆:将堆中的所有数据重新排序上述介绍了一下堆的基础知识,接下...原创 2019-07-14 00:23:39 · 145 阅读 · 0 评论 -
个人对于八大排序的总结(上)
刚开始学编程最让我感兴趣的就是算法,各种各样的算法,而刚开始接触算法的时候,接触到的就是排序算法,各种各样的排序算法,今天我就想基于小编个人的理解,写一写排序算法的思路目录1.冒泡排序2.选择排序3.插入排序在介绍排序之前先引入一个按照数组下标进行交换的算法void swap(int a[max],int i,int j){ int temp; temp=a[i...原创 2019-07-11 17:40:18 · 223 阅读 · 0 评论 -
个人对于八大排序总结(中1)
5.快速排序基本思想:一趟把数据分成俩个部分,第一个部分所有的数据都比第二个部分所有的数据小,每一趟都按照之前的那种思想,把前一个部分也化成俩部分,后面一部分也化成俩部分,依次递归下去...个人理解的快速排序有俩种算法目录1.单向指针扫描法;2.双向指针扫描法;单向指针扫描法:思想:意思是只有一个指针是主动扫描,这个指针所指向的数据和某个数据进行比较,如果大于某个固定数...原创 2019-07-12 01:04:24 · 176 阅读 · 0 评论 -
位运算的基本运算详解
在处理整形数值时,可以直接对组成整形数值的各个位进行操作。&(与) |(或) ^(异或) ~(非) >>和<<运算符将二进制位进行右移和左移操作 >>>运算符将用0填充高位;>>运算符用符号位填充高位,没有<<<运算符 对于int型,1<<35和1<<3是相同的(取模32),而左...原创 2019-07-20 17:39:34 · 2088 阅读 · 1 评论 -
递归初步认识例题
肥婆纳妾数列:0,1,1,2,3,5,8,13,21,34,55,89,144……依次类推下去,你会发现,它后一个数等于前面两个数的和。在这个数列中的数字,就被称为斐波那契数。递归思想:一个数等于前两个数的和。(这并不是废话,这是执行思路)具体代码:public static int f(int n){//递归 if(n==1){ return 0; }else if(...原创 2019-07-23 11:18:39 · 469 阅读 · 0 评论 -
最小可用id(个人分析)
题目:在非负数组(乱序)中找到最小的可分配的id(从1开始编号),数据量10000000。题目解读:在一个不重复的乱序的自然数组中找到最小的缺失的那个数,比如1,2,3,6,4,5,8,11。那么最小可用id就为7。个人总结有三个方法来进行解答,但是算法性能不一样:第一种,暴力解决,设置一个变量,依次遍历数组中每个元素,如果哪个元素没有直接returnpublic static ...原创 2019-07-26 18:36:21 · 497 阅读 · 1 评论 -
递归经典例题之汉诺塔问题
汉诺塔问题:有三根相邻的柱子,标号为A,B,C,A柱子上从下到上按金字塔状叠放着n个不同大小的圆盘,要把所有盘子一个一个移动到柱子B上,并且每次移动同一根柱子上都不能出现大盘子在小盘子上方,请问怎么移动。假设只有三个盘子编号为1,2,3具体做法就是:1盘子从a->b2盘子从a->c1盘从b->c3盘从a->b1盘从c->a2盘从c-&g...原创 2019-07-23 11:04:45 · 2047 阅读 · 0 评论