自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(10)
  • 问答 (2)
  • 收藏
  • 关注

原创 堆 排 序

008 堆排序一、算法介绍堆的概念堆可看成是一颗完全二叉树满足的顺序存储结构。满足任何分支结点的关键字都大于其左右孩子结点关键字的,称为大根堆;满足任何分支结点的关键字都小于其左右孩子结点关键字的,称为小根堆。完全二叉树完全二叉树的定义若二叉树中最多只有最下面两层的结点度数可以小于2,并且最下面一层的叶子结点都依次排列在最左边的位置上,这样的二叉树成为完全二叉树。完全二叉树的性质我们把二叉树的各个结点按照层数的大小,同一层从左到右的次序进行编号。对于层序遍历编号为i的结点,有如下性质:1.

2020-12-19 00:53:30 545

原创 快速排序

007 快速排序一、算法介绍快速排序是由冒泡排序改进而得的。作为目前内排序算法中最快的排序算法,快速排序通常明显比时间效率同为 O(nlogn) 的其他算法更快。其基本思想是:在待排序的n个元素中任取一个(通常取第一个)作为基准(pivot),把该元素放到适当的位置,数据序列被此元素划分为两部分。比该元素小的放在前一部分,大的放在后一部分,这样基准元素就被放在了适当的位置,即归位。然后分别再对划分出的两部分进行同样的操作,直到划分的部分只有一个元素或为空。这一过程中大树一直在往后移,小数一直往前移,所以

2020-12-16 16:25:24 149

原创 希尔排序

006 希尔排序一、算法介绍希尔排序是直接插入排序的改进版本,也称递减增量排序算法。其基本思想是:按照一定间隔将待排序序列分为若干组,再对每组进行插入排序。一轮排序结束后,缩小间隔再进行相同的操作。序列在一轮轮的分组排序后逐渐变得有序,最后再对整个序列进行直接插入排序。二、算法分析初始间隔一般取序列长度的一半,一轮排序结束后将 序列减半。最后间隔为一时即对整个序列直接插入排序。序列大致有序时,直接插入排序就比乱序序列提高不少时间效率,因为直接插入排序在比较时遇到更小元素时就直接结束这一轮遍历插入,否

2020-12-15 18:05:33 167 1

原创 二分归并排序

005 二分归并排序一、算法介绍将待排序序列分成两个子序列,然后对两个子序列使用相同算法进行排序,最后将排好序的两个子序列归并成为一个序列。核心思想是将复杂的问题拆分成为若干个简单的子问题,分别对子问题求解,再对子问题进行综合进而得到大问题的解,这就是所谓的分而治之。二、算法分析算法分为两部分,首先是“二分”算法,显然可以利用递归对序列进行拆分,例如数组A[1-8],将其拆分为A[1-4]和A[5-8],然后再对两个数组进行拆分,例如将A[1-4]拆分为A[1-2]和A[3-4],当拆分成A[1]和

2020-12-14 16:26:40 437

原创 选择排序

004 选择排序一、算法介绍选择排序是从未排好序的序列中选出一个最小的元素,然后将其放在已排好序序列的末尾。直到待排序的元素个数为零。第一次序列中排好序的序列是一个空序列,因此将整个序列中最小的元素放在首部。二、算法分析每次循环是从待排序序列选择最小元素然后将其放在待排序序列的首位置,因此可以记录当前最小元素的位置(循环开始时以第一个元素为最小),然后向后遍历,与当前最小元素比较,若比当前最小元素小就记录该元素的位置。循环结束时就把记录位置的元素与待排序序列的第一个元素交换位置。因为每次选择最小元素

2020-12-13 23:49:29 59

原创 冒泡排序

003冒泡排序一、算法介绍冒泡排序是重复地遍历要排序的序列,判断相邻的两个元素的顺序是否正确,若不正确,则交换位置。重复地遍历直到没有元素需要交换,此时序列已排好序。二、算法分析第一轮遍历时,从第一个元素开始,若后面的元素比当前遍历的元素小,则交换它们的位置,直到倒数第二个数。第一轮遍历结束后,因为一定是较大元素向后移,所以最大的元素就被放到了最后一个位置。则此后的遍历地结束位置都要比上一轮前移一个位置。如图所示三、算法代码运行结果...

2020-12-10 18:16:18 118

原创 插入排序

002插入排序一、算法介绍插入排序是将一个数插入到已排好序的有序表里。如同打扑克时,将摸到的牌和手上的牌比较大小,然后插入到合适的位置。其基本思想是,假设前n-1个数已排好序,插入第n个数时,从第n-1个数开始,从后向前依次与第n个数进行比较,直到找到其应该插入的位置将其插入。照此方法对后面的所有数进行插入,从而使整个序列变得有序。二、算法分析在得到一个数组后,把第一个数看作有序序列,即从第二个数开始进行插入。进行操作时,先把要插入的数拿出来,在原来的位置留一个空,再依次向前遍历,如果遇到前面的数

2020-12-09 17:01:02 99

原创 汉诺塔问题

汉诺塔问题001汉诺塔问题一、问题描述有A、B、C三根柱子,在A杆自下而上、由大到小按顺序放置64个圆盘。游戏的目标:把A杆上的金盘全部移到C杆上,并仍保持原有顺序叠好。操作规则:把一个圆盘从一根柱子移到另一根柱子称作1次移动,在移动和放置时允许使用B柱,但在移动过程中三根杆上都始终保持大盘在下,小盘在上。问把所有圆盘从A盘移到C盘上总共需要进行多少次移动?二、算法分析让我们把问题简化一下:当A柱上只有一个圆盘时,只需移动一次,即A—>C.当A柱上有两个圆盘时,需移动三次,即A—>

2020-12-08 20:34:12 8263

原创 VScode集成终端工作目录

今天打开VScode的终端时,发现工作目录不是当前文件所在的目录,而是用户目录,用cd命令跳转时,又报错,这着实令我很头疼。后来发现ctrl+shift+c可以打开cmd,而且工作目录就是文件所在目录,但感觉新开一个窗口比较麻烦,还是想用VScode的终端。于是到网上找解决的办法,看到有人说能通过改openInTerminal快捷键的方法解决,照上面说的,添加了快捷键 ctrl+shift+`(此符号后用 ‘ 代替)之后,按添加的快捷键,发现打开的终端的工作目录真的是文件所在目录,然而,按原来的方法

2020-05-15 00:44:29 1401

原创 CentOS7下配置Python3开发环境

目录CentOS网络设置安装Python3安装文本编辑器编写程序CentOS网络设置首先检查一下是否能连网,打开浏览器随意输入一个网址,看页面是否能加载出来。如果不能,则需要进行网络设置。点击虚拟机菜单栏的编辑->虚拟网络编辑器在虚拟网络编辑器中,点击更改设置->还原默认设置(需要关机或挂起)开启CentOS系统,打开终端,以管理员身份操作,如果不是,输入su在输入密码输入 ifconfig 查看网卡名输入 vim /etc/sysconfig/network-scri

2020-05-12 23:00:42 1041 3

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除