在阅读本文章之前请确保你已经掌握了递归思想。 归并排序采用了一种分治的思想。时间复杂度为O(n log n)空间复杂度为O(n),是一种稳定的排序算法,它的速度仅次于快速排序。整个过程分为划分和合并两个部分 归并排序的步骤: 1.检查数组的元素数,如果元素数大于等于2就可以视为两个数组。(划分) 2.将数组划分为两部分,分别对两部分分别进行归并排序。(划分并排序,递归) 3.对排序好的两部分进行合并得到最终的有序数组。(合并) 还是举个栗子,我有一组数8 7 6 5 4 3 2 1: 这个过程也是一个自顶向下逐步划…

2020年01月13日 1条评论 199点热度 4人点赞 阅读全文

在阅读本文章前请确定你已经掌握递归的思想 快速排序是一种高效的排序方式,它的时间复杂度最差情况是O(n2) ,理想情况O(nlog2n),正是因为它的高效,该排序方法被认为是目前最好的一种内部排序方法,对于初学者来说理解可能有难度. 快速排序的大致步骤: 1.选取一个划分标准(一般选择最左边的值). 2.通过某种算法(暂时忽略这个算法的实现)将数组以标准值划分为两部分,左边的都小于或等于标准值,右边的都大于或等于标准值. 3.分别将标准值两边看做两个新数组,将新数组进行上述过程。 4.直到划分到元素总数小于2就返回…

2020年01月07日 0条评论 318点热度 3人点赞 阅读全文

学过高中数学排列组合都知道全排列是什么,就是给出一组没有重复的数字 ,将数字进行排列,要求排列顺序没有重复的情况。C语言用一种递归的方法就能实现。 我们先来看看如果要我们自己穷举是什么情况 假设输入了三个数123 首先3开头 321 312 2开头 213 231 1开头 123 132 如果四个数呢1234呢 4当开头                 3做第二个数 …

2020年01月03日 0条评论 130点热度 2人点赞 阅读全文

问题描述: 相传在古印度圣庙中,有一种被称为汉诺塔(Hanoi)的游戏。该游戏是在一块铜板装置上,有三根杆(编号A、B、C),在A杆自下而上、由大到小按顺序放置64个金盘(如下图)。游戏的目标:把A杆上的金盘全部移到C杆上,并仍保持原有顺序叠好。操作规则:每次只能移动一个盘子,并且在移动过程中三根杆上都始终保持大盘在下,小盘在上,操作过程中盘子可以置于A、B、C任一杆上。 下面我们来用递归的思想考虑一下,递归首先要考虑最后一次运算,假设要移四个圆盘从A到C上,(下面为了方便我们用一个“|”表示“借助”,用->…

2019年12月02日 0条评论 336点热度 6人点赞 阅读全文

扫雷也都玩过,也是个极其无聊的游戏 现在我们也能用c语言实现它,但是因为我没有找到好的鼠标事件的方法,网上的方法都和system函数产生冲突 一旦调用system函数鼠标事件就不能正常响应. 下面是几个关键点 让输出变成彩色,也就是让命令行输出的字体不在只是黑白配色, 字背景颜色范围:40 - 49 40:黑 41:深红 42:绿 43:黄色 44:蓝色 45:紫色 46:深绿 47:白色   字颜色:30 - 39 30:黑 31:红 32:绿 33:黄 34:蓝色 35:紫色 36:深绿 37:白色 …

2019年11月22日 0条评论 167点热度 3人点赞 阅读全文