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