快速排序 平均时间复杂度O(nlogn); 最好情况时间复杂度O(nlogn),pivotkey基本处于顺序表中间; 最坏情况时间复杂度O(n),顺序表处于正序和倒序; 最好情况空间复杂度O(logn),要执行logn次递归调用; 最坏情况空间复杂度O(n),要执行n-1次递归调用; ...
分类:
编程语言 时间:
2019-09-11 16:18:54
阅读次数:
84
1.为什么要用函数 a)函数能够增加程序的可读性 b)提高开发的效率 c)可以重复使用和在各种适用情况下使用 这段代码适用于任何想要交换数字的时候,节省了时间。 2.为什么要用函数重载 a)解决了命名冲突问题,增加了可读性. b)减少了用户的复杂性 函数重载可以优先选出想要应用的函数 3.什么是值传 ...
分类:
其他好文 时间:
2019-09-10 18:06:16
阅读次数:
95
题目来源:《信息学奥赛一本通》例5.4 题目描述 要在国际象棋棋盘($8 \times 8$ 的棋盘)中放 $8$ 个皇后,使任意两个皇后都不能互相吃。(提示:皇后能吃同一行、同一列、同一对角线的任意棋子。) 输出格式 输出一个整数,用于表示八皇后问题的放置方案。 题目分析 首先我们用 $(x,y) ...
分类:
其他好文 时间:
2019-09-03 10:04:28
阅读次数:
130
题目描述 任何一个大于 $1$ 的自然数 $n$ ,总可以拆分成若干个小于 $n$ 的自然数之和。当 $n = 4$ 时,总共有 $4$ 种拆分方法: $4=1+1+1+1$ $4=1+1+2$ $4=1+3$ $4=2+2$ 现在给你一个数 $n(1 \le n \le 20)$ ,请按顺序输出 ...
分类:
其他好文 时间:
2019-09-03 09:41:25
阅读次数:
88
1. 前言 1. 算法为王。 2. 排序算法博大精深,前辈们用了数年甚至一辈子的心血研究出来的算法,更值得我们学习与推敲。 因为之后要讲有内容和算法,其代码的实现都要用到递归,所以,搞懂递归非常重要。 2. 定义 方法或函数调用自身的方式称为递归调用,调用称为递,返回称为归。 简单来说就是: 自己调 ...
分类:
编程语言 时间:
2019-09-01 10:41:53
阅读次数:
68
L 二、栈的动作: 结合函数调用栈的机制介绍一般函数调用的实现方式与过程,并将其推广到递归调用。 以降低空间复杂度的目标为线索,介绍通过显式的维护栈的结构解决应用问题的典型方法和技巧。 利用栈结构,实现基于试探回溯策略的高效搜索算法。 基于轮值策略的通用循环分配器,并以银行窗口服务为例实现基本的调度 ...
分类:
其他好文 时间:
2019-08-31 23:48:49
阅读次数:
188
递归函数 注意: ①一个函数在他的函数体内调用他自身称为递归调用,执行递归函数将反复调用其自身,每执行一次进入新的一层。 ②为防止递归函数无休止的进行,必须在函数内有终止条件。 ③对于一个函数只要知道他的递归定义式和边界条件,就可以编递归函数 例子1:阶乘 <!DOCTYPE html><html> ...
分类:
其他好文 时间:
2019-08-26 22:57:16
阅读次数:
105
1 递归:调用自己的方法 2 递归三原则:1.封装一个独立的方法 3 2.递归一定要有出口(结束条件) 4 3.符合一定的规律 5 6 斐波拉契 1 1 2 3 5 8 13 21 .......... 7 // int n1=1,n2=1; 8 // int sum=0; 9 // for(int... ...
分类:
编程语言 时间:
2019-08-18 22:13:07
阅读次数:
108
3.2、函数递归调用引发的栈溢出 写一段最简单的无穷递归代码,如下: 在VS编译,Debug模式下运行之,结果报错 观察下调用栈,发现栈没有破坏,但被大量的f()调用沾满,如下: 这也充分说明了,是递归调用引起了栈溢出 转到汇编,在地址栏里输入上面错误框里的地址0x011515C9 可以看到,程序是 ...
分类:
编程语言 时间:
2019-08-17 14:41:44
阅读次数:
102
题目描述: 将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例: 注意: 1)空指针NULL,null是错误的; 2)空间复杂度是O(m+n),因为一共进行 m+n 次递归调用,产生了 m+n 个栈帧。 ...
分类:
其他好文 时间:
2019-08-15 12:41:56
阅读次数:
95