
暑假复习小程序
pflik-sj
泼墨吹烛,我自赏遍红尘蒹葭,点笔寒桠,为你温纸入画。
展开
-
简单计数排序
计数排序是一种简单而有效的非比较类排序算法。按照计数排序的思想,需要设置一个额外的数组,该数组中第i个元素用存放排序数据中值等于i的元素个数。借助这个额外的数组中存储的计数信息,就可以将待排序的数据按照规定的顺序及其实现列出来。步骤: 1.统计数组中每个值为i的元素出现的次数,存入数组C的第i项。 2.根据C[i],输出待排数据。简单的计数排序程序:#include<i...原创 2018-08-03 16:15:57 · 594 阅读 · 0 评论 -
用栈求解迷宫问题
求解迷宫问题问题描述 求迷宫问题就是求出从入口到出口的路径。在求解时,通常用的是“穷举求解”的方法,即从入口出发,顺某一方向向前试探,若能走通,则继续往前走;否则沿原路退回,换一个方向再继续试探,直至所有可能的通路都试探完为止。为了保证在任何位置上都能沿原路退回(称为回溯),需要用一个后进先出的栈来保存从入口到当前位置的...原创 2018-08-11 09:53:42 · 10107 阅读 · 2 评论 -
链表
链表的基本操作: 1.创建链表 2.插入元素到链表中 3.删除指定元素 4.输出链表#include<iostream>#include<cstdio>#include<cstring>#include<cstdlib>using namespace std;typedef struct NODE{ int da...原创 2018-08-02 16:09:22 · 210 阅读 · 0 评论 -
Reverse Integer
Reverse Integer一:题目:Reverse Integer 解:这个题其实就是将一个多位数倒序输出一遍即可。 注:①:这题最大的难点就在:关于内存保护,是否溢出。 得到一个数后首先就得判断是否能够存的下,是否溢出,即 /*首先直接判断给的是是否越界*/ if(x &gt; 2147...原创 2018-08-14 21:47:19 · 151 阅读 · 0 评论 -
二分查找
①.简介:二分查找也称折半查找(Binary Search),它是一种效率较高的查找方法。但是,折半查找要求线性表必须采用顺序存储结构,而且表中元素按关键字有序排列 ②.算法要求 1.必须采用顺序存储结构。 2.必须按关键字大小有序排列。③.基本思想 二分查找的基本思想是:设R[low..high]是当前的查找区间 mid=(high+low)/2;(1)首先...原创 2018-08-02 17:11:47 · 392 阅读 · 0 评论 -
何时使用递归-定义(n!,Fibonacci数列),数据结构(单链表),问题的求解方法(汉诺塔)
何时使用递归一:定义是递归的有许多数学公式,数列等的定义是递归的。例如,求n!和Fibonacci数列等。对于这些问题的求解可以将其递归定义直接转化为对应的递归算法。 例如:求n!的递归算法:int fun(int n){ if(n==1) return (1); else ...原创 2018-08-12 11:54:56 · 838 阅读 · 0 评论 -
哈希存储(建哈希表)和哈希查找
1.哈希哈希查找是通过计算数据元素的存储地址进行查找的一种方法。 采用最简单的除留取余法计算存储地址,用开放地址法中的线性探测法解决冲突。函数insert_hash用于将数据存储到数组中,函数search_hash用于按关键词查找。 代码:#include<iostream>#include<cstdio>using namespace st...原创 2018-08-03 12:15:33 · 3979 阅读 · 1 评论 -
快速排序
快速排序C语言精细递归版:#include<iostream>#include<cstdio>using namespace std;void quicksort(int data[],int first,int last);void quicksort(int data[],int first,int last){ int i,j,temp,ba...原创 2018-08-03 15:28:36 · 126 阅读 · 0 评论 -
基于递归求解方法的递归算法设计
基于递归求解方法的递归算法设计 当求解问题的方法是递归(如Hanoi问题)的或者可以转换成递归方法求解时(如皇后问题),可以设计成递归算法。 例如,求f(n)=1+2+…+n(n>=1),这个问题可以转化为递归方法求解,假设“小问题”是f(n-1)=1+2+…+(n-1),是可求得,则f(n)=f(n-1)+n。 ...原创 2018-08-12 23:16:25 · 911 阅读 · 0 评论 -
Two Sum
Two Sum题目: Given an array of integers, return indices of the two numbers such that they add up to a specific target.You may assume that each input would have ex...原创 2018-08-13 16:10:17 · 318 阅读 · 0 评论 -
格式说明符
格式说明符1.格式说明符 %d 十进制有符号整数 %i 有符号十进制整数 (与%d相同) %08d 添加前导零,确保显示的值至少包含8位 00012345(共8位) %4d 以4 位宽度显示一个整数,如 2_ _ _ 4_ _ _ 6_ _ _ 8 %f...原创 2018-08-10 20:26:48 · 6670 阅读 · 0 评论 -
栈的应用--简单计算器转换知识
栈的应用1. 表达式求值1.问题描述: 这里限定的表达式求值问题是:用户输入一个包含“+”、“-”、“*”、“/”、正整数和圆括号的合法数学表达式,计算该表达式的运算结果。2.数据组织 算术表达式exp采用字符数组表示,其中只含有“+”、“-”、“*”、“/”、正整数和圆括号。 为了方便,假...原创 2018-08-10 23:12:56 · 777 阅读 · 4 评论 -
问题求解策略--算法
1.针对给定的问题,需要找到行之有效的算法解决。学习和研究前人给出的算法,是具备运用算法和设计算法能力的途径。这其中包括几个层次:①:知道一个已有的算法解决特定的问题;②:从几个算法中,选择一个最合适的去解决给定的问题;③:改进已有的算法使其更适合解决当前问题;④:设计算解决别人没有解决过的问题。 2.常见的算法设计策略包括:分治,动态规划,贪心,回溯,穷举,分支限界,迭代,递归,回溯,①....原创 2018-08-03 17:34:51 · 3073 阅读 · 0 评论 -
线性表的顺序存储结构-顺序表
线性表的顺序存储结构-顺序表一. 在C/C++语言中,借助数组类型来实现顺序表,也就是说,用数组存放线性表的元素及其逻辑关系,数组的基本类型就是线性表中元素的的类型,数组大小(即数组上界-下界+1)要大于等于线性表的长度,否则该数组不能存放对应线性表的所有元素。所以当线性表长度小于数组大小时,该数组中会有一部分空闲空间。 ...原创 2018-08-09 12:10:59 · 2366 阅读 · 0 评论 -
线性表的连接存储结构-链表
线性表的链接存储结构 在链式存储中,每个存储节点不仅包含有所存元素本身的信息(称之为数据域),而且包含有元素之间逻辑关系的信息,即前驱节点包含有后继节点的地址信息,这称为指针域,这样可以通过前驱节点的指针域方便地找到后继节点的位置,提高数据查找速度。 一般地,每个节点有一个或多个这样的指针域。若一个节点中的某个指针域不...原创 2018-08-09 16:17:29 · 735 阅读 · 0 评论 -
约瑟夫环
#include&lt;stdio.h&gt;#include&lt;stdlib.h&gt;#define M 5#define N 20int main(){ int in_circle[N]; /*定义数组存放初始的人数*/ int num_remained, counts=0, i; /*圈中剩余的人数,存放报数的人数,循环变量*/ for(i=0; ...原创 2018-07-31 18:45:29 · 244 阅读 · 0 评论 -
冒泡排序
冒泡排序的基本代码:(升序)#include<stdio.h>#include<stdlib.h>#define N 10int main(){ int a[N]; /*用于存放需要排序的数*/ int i,j; /*两个循环变量*/ int temp; /*中间变量*/ printf("input %d numbers: ...原创 2018-07-31 19:35:51 · 249 阅读 · 0 评论 -
线性表的链式存储结构--双链表
双链表对于双链表,采用类似于单链表的类型定义,其DLinkList类型的定义如下: typedef struct DNode //声明双链表节点类型 { ElemType data; struct DNode *prior; //指向前驱节点 struct DNode...原创 2018-08-09 17:06:24 · 1268 阅读 · 0 评论 -
线性表的应用--求自然链接
1.问题描述 计算任意两个表的简单自然连接过程讨论线性表的应用。假设有两个表A和B,分别是m1行、n1列和m2行、n2列,它们简单自然连接结果C=A 自然链接i=j)自然链接i=j)自然链接i=j) B,其中i表示表A中列号,j表示表B中的列号,C为A和B的笛卡儿积中满足指定连接条件的所有记录组,该连接条件为表A的第i列与表B的第j列相等。例如: 数据组织 ...原创 2018-08-09 17:35:43 · 1813 阅读 · 0 评论 -
选择排序
选择排序(升序): 代码:#include<iostream>#include<cstdio>#define N 10using namespace stdint main(){ int a[N], i,j,temp,k; /*k为标记变量,temp为中间变量*/ printf("Enter %d numbers:\n",N); fo...原创 2018-07-31 22:23:40 · 487 阅读 · 0 评论 -
线性表--有序表
有序表-逻辑结构 所谓有序表,是指这样的线性表,其中所有元素以递增或递减方式有序排列。为了简单,假设有序表元素是以递增方式排列。从中看到,有序表和线性表中元素之间的逻辑关系相同,其区别是运算实现的不同。1.有序表基本运算若以顺序表存储有序表,会发现基本运算算法中只有ListInsert()算法与前面的顺序表对应的运算有所差异,...原创 2018-08-09 22:40:23 · 10410 阅读 · 0 评论 -
栈和队列--栈
栈 从组成元素的逻辑关系来看,栈和队列都属于线性结构。栈和队列与线性表的不同之处在于它们的相关运算具有一些特殊性。更准确的说,一般线性表上的插入,删除运算不受限制,而栈和队列上的插入,删除运算均受某种特殊限制,因此栈和队列也称为操作受限的线性表。1.栈的定义栈是一种只能在一端进行插入或删除操作的线性表。...原创 2018-08-10 12:32:15 · 650 阅读 · 0 评论 -
输出型参数设计--数据结构
**输出型参数的设计理解** 在设计算法时,输入型参数的设计是十分简单的,那么输出型参数如何让解决呢?下面通过一个实例进行说明。1. 例如设计一个交换两个整数的算法,编写相应的swap1(x,y)如下:void swap1(int x,int y){ int temp; temp=x; x...原创 2018-08-08 22:19:18 · 1164 阅读 · 1 评论