
常用算法与数据结构
落草神阶
坚持过程中的人最有魅力
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
常用排序算法解析
大学里也学了不少,今天将常用的几种排序算法做一下总结,希望对同道中人有帮助,也让自己的知识巩固一下,嘿嘿…..排序的种类 1.插入类排序(直接插入排序,希尔排序) 2.选择类排序(直接选择排序,堆排序) 3.交换类排序(冒泡排序,快速排序) 4.归并类排序冒泡排序 以升序为例 排序思想:从后往前每相邻元素进行比较,每趟产生最小 共需n-1趟 时间复杂度:O(n^2) 稳定性(主要看原创 2016-04-06 17:33:30 · 412 阅读 · 0 评论 -
常用查找算法
查找:按某个关键字的值在数据集合中找到符合条件的值 (顺序查找,二分查找,散列查找,索引查找)顺序查找 适用于顺序表,链表 在某个数据集合中从某一个数据元素往后依次查找平均查找长度:ASL=(1+n)/2; 时间复杂度:O(n) 缺点:不符合大数据集合我以C代码为例:int search(int a[],int n.int key){ int i; int tag=-1;原创 2016-04-06 19:38:51 · 541 阅读 · 0 评论 -
算法之约瑟夫环
约瑟夫环:设有N个人围成一个圈,约定从第几个人开始,数几个人会出圈,每个人的出圈顺序我以C代码为例://约瑟夫环#include<stdio.h>void Jorephus(int a[],int sum,int m,int n){ int x,j; while(sum>1){ m=(m+n-1)%sum; x=a[m]; for(原创 2016-04-12 19:10:10 · 505 阅读 · 0 评论 -
数据结构之链表
数组,存储空间大,且连续,而链表与之相反,它的存储区域是不连续的空间单元;链表中除了头节点没有前驱,尾节点没有后继之外,其余都会有前驱和后继(此文中暂不提及环链)链表的每个节点都是一个结构体单元,至少有两个域,一个为值域,一个为存储下一个节点地址的指针域其结构体可声明为:typedef struct node{ int data; struct node *next;}ElemSN;创建一条链原创 2016-04-10 12:45:26 · 428 阅读 · 0 评论 -
数据结构之二叉树
树,一种非线性结构 <1>有且只有一个节点无前驱—根节点 <2>有多个节点没有后继—叶子节点 <3>除根,叶子节点外的其余节点,向上只有一个前驱,向下有多个后继节点的度:一个节点的子女节点的个数 树的度:树中度值最大的节点的度 K叉树,即树的度值为K本文主要以二叉树为主: <1>一棵非空二叉树的叶子节点总比双分支节点多一个 即,总节点个数=双分支节点数+单分支节点数+叶原创 2016-04-10 16:28:24 · 457 阅读 · 0 评论 -
算法之全排列
全排列思想:每排一次都进行交换,每次只有后几个全排列,第一个永远是不需排的#include <stdio.h> //全排列 int n = 0; void swap(int *a, int *b) { int m; m = *a; *a = *b; *b = m; } void perm(int list[], int k原创 2016-04-10 16:40:30 · 370 阅读 · 0 评论 -
加密之SHA,MD5
SHA,MD5两者又可称为安全散列算法,一种不可逆转的加密算法 严格意义上讲,两者都不属于一种加密算法,它们只是将数据换了另一种形式进行存储。所谓安全散列算法,是指将任意长度的输入,散列成固定长度的输出, —>压缩映射(等价),散列空间远小于输入空间,散列值可一一对应MD5 为128位,SHA为160位 所以,MD5比SHA快,但SHA比MD5强度高SHA:import java.securi原创 2016-04-16 17:07:15 · 615 阅读 · 0 评论