数据结构
从前有座山a
这个作者很懒,什么都没留下…
展开
-
全排列
//全排列#include<iostream>#include<vector>#include<algorithm>using namespace std;//排列树void Perm(int *br,int k,int m){ if(k==m) { for(int i=0;i<=m;++i) { cout<<...原创 2019-03-13 22:54:33 · 105 阅读 · 0 评论 -
希尔排序
/*希尔排序又称缩小增量排序,它也是一种属插入排序的方法 但在时间效率上,较直接插入排序有加大的改进,它的基本思想是:先将整个待排序记录序列分割成若干个子序列分别直接进行直接插入排序,待整个序列中的记录”基本有序“时,再对全体记录进行一次直接插入排序gap增量,即组数也是间隔值*/#include<stdio.h>void Shell(int *arr,int len,...原创 2019-08-11 10:40:28 · 232 阅读 · 0 评论 -
插入排序
插入排序是通过将当前第i个待排元素i与数组前i-1个已经有序的元素j进行两两比较,如果j元素小于i,将i插在j元素的后面/*排序过程中涉及的存储器不同,将排序方法分为两大类:一类是内部排序指的是待排序记录存放在计算机随机存储器中的排序过程 另外一类是外部排序指的是待排序记录的数量很大,以至于内存不能一次容纳全部记录,在排序过程中尚需对外存进行访问的排序过程*///直接插入排序#...原创 2019-08-11 10:14:32 · 77 阅读 · 0 评论 -
最近点对问题
用x轴上某个点m将s划分成两个集合使得s1的元素都比m小,s2的元素都比m大,这样对于所有 p q有p<q递归的在s1 s2上找出其最近点对|p1 p2| |q1 q2| p3是s1中最大的 q3是s2中最小的s中最近点对或者是{p1,p2}或者是{q1,q2}或者是某个{p3,q3}#include<iostream>#include<...原创 2019-07-20 20:31:46 · 120 阅读 · 0 评论 -
二叉树的创建和遍历(中序 先序 后序)
二叉树:不仅要存放数据,而且要存放数据与数据之间关系的一种数据结构。1、每个点都只能最多有两棵子树,即二叉树不存在度大于2的节点2、二叉树的子树有左右之分,其子树的次序不能颠倒二叉树的性质1、 在二叉树的第i层上至多有2^(i-1)个结点2、深度为k的二叉树至多有2^(k)-1结点3、对任何一棵二叉树T,如果其终端节点数为n0,度为2的节点数为n2,则n0=n2+14、...原创 2019-07-20 20:02:47 · 2181 阅读 · 0 评论 -
顺序表初始化(不定长顺序表)
typedef struct DSeqList{ int *elem;//指向保存数据的内存 int length;//有效数据个数 int listsize;//总格子数}DSeqList;typedef DSeqList *PDSeqList;//初始化函数void InitDSeqList(PDSeqList plist)//这里的plist自带*...原创 2018-10-18 22:57:00 · 556 阅读 · 0 评论 -
链表初始化
typedef struct Node{ int data; //数据 struct Node *next;//下一个节点的地址}Node,*List;//List == Node *//初始化,头节点已经存在void InitList(List plist){ assert(plist != NULL); plist->next = NU...原创 2018-10-20 21:37:07 · 4180 阅读 · 0 评论 -
排序
排序,是计算机程序设计中的一种重要操作,他的功能是将一个数据元素的任意序列,重新排列成一个按关键字有序的序列。 排序方法有稳定与不稳定之分 由于待排序的记录数量不同,使得排序过程中涉及的存储器不同,可将排序方法分为两大类:一类是内部排序,指的是待排序记录存放在计算机随机存储器中进行的排序过程;另一类是外部排序,指的是待排序记录的数量很大,以致内存一次不能容纳全部...原创 2018-11-22 18:51:05 · 241 阅读 · 0 评论 -
linux文件管理基本命令
操作系统:操作系统是管理软硬件资源,并为用户提供与计算机交互的一种软件。Linux操作系统:本身是免费的 开源 允许多用户的操作系统(允许多个用户同时登陆操作系统进行工作)内核小Windows操作系统: 相反两种系统目录结构:Windows:C盘 D盘Linux:/(根目录)-------最初始位置/bin /home /dev /proc /mnt...原创 2018-11-22 18:51:24 · 702 阅读 · 0 评论 -
栈
栈(Stack),是限定仅在表尾进行插入或删除操作的线性表。因此对栈来说,表尾端有其特殊含义,称为栈顶,相应的表头 端称为栈尾。栈又称为先进后出的线性表。栈的结构如下图所示//不定长顺序栈#include<stdio.h>#include<stdlib.h>#include<assert.h>#define INITSIZE 10...原创 2018-11-25 17:00:59 · 105 阅读 · 0 评论 -
队列
和栈相反,队列是一种先进先出的线性表,他只允许在表的一端进行插入,而在另一端删除元素。在队列中允许插入的一端叫做队尾(队尾入队),允许删除的一端称为队头(队头出队),先进先出。用链表表示的队列简称为链队列。一个链队列需要两个分别指向队头和队尾的指针。(插入时操作队尾,删除时操作队头-----队列的特性)#include <stdio.h>#include &...原创 2018-11-28 12:37:08 · 130 阅读 · 0 评论 -
递归/分治策略 二分查找的递归与非递归
规模问题:分治策略,将一个难以解决的规模大的问题,分解成一些规模较小的相同问题#include<iostream>using namespace std;int fac(unsigned int n)//用递归解决阶乘{ if(n<=1) return 1; else { return fac(n-1)*n; }}int fun(unsigned...原创 2019-03-13 20:31:19 · 345 阅读 · 0 评论 -
冒泡排序
/*冒泡排序 大数沉底 两两比较 时间复杂度O(n^2) 稳定 */#include<stdio.h>void BubbleSort(int *arr,int len){ int i; int j; int tmp; for(i=0;i<len-1;i++)//控制循环次数 每次只能确定一个数的位置 { for(int j=0;j+...原创 2019-08-11 11:20:16 · 120 阅读 · 0 评论