![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构及算法
走神的阿圆
百度程序员,深度学习框架,推荐架构,电台主播,娃娃机店主,业余写手。
展开
-
常用排序算法-快速排序
常用排序算法-快速排序1 快速排序简介快速排序由C. A. R. Hoare在1962年提出。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。用通俗的语言来讲解的话,所谓快速排序的原理,就是“选择一个数字,所有比它小的,原创 2017-05-05 21:21:30 · 332 阅读 · 0 评论 -
常用排序算法-冒泡排序
1. 冒泡排序简介冒泡排序,顾名思义,就像水中的气泡一样接二连三的浮出水面,也很像排名赛一样,通过不断地和上层选手进行对战,胜者上,败者下。具体而言,可从最后一名“选手”开始进行爬天梯,不断地与前一名“选手”比赛,获胜则交换位置,同时获胜者继续前进,失败者停留原地。2. 冒泡排序基本流程 1. 选择第N个数作为基准数,不断地与前N-1个数进行比较。如果基准数比较小,则继续向前比较;如果原创 2017-05-06 13:08:55 · 298 阅读 · 0 评论 -
常用排序算法-希尔排序
1. 希尔排序简介 希尔排序(Shell Sort)是插入排序的一种。也称缩小增量排序,是直接插入排序算法的一种更高效的改进版本。希尔排序可以看作是对直接插入排序的一次升级,通过局部有序化,使得排序效率更高。下图引自百度百科: 可以看出希尔排序的原理过程非常简单,通过选择一个增量gap,暂定为N/2,N为待排序数字个数,在本例中gap=5,那么对分出原创 2017-05-26 08:02:08 · 388 阅读 · 0 评论 -
常用排序算法-直接插入排序
1. 直接插入排序简介 直接插入排序用通俗的话讲,非常像打扑克时摸牌与插牌的情形,如图1,如果此时摸到了一张7,自然会由后向前比较,比5大,继续比较,没有8大,就插在这里,直接插入排序的过程就是摸牌与插牌的过程,思想很简单,所以实现也很简单。2 直接插入排序基本流程 1. 第一个数字自然有序; 2. 从第二个数字开始,从后向前以此比较。会遇到三种情况 ①原创 2017-05-07 16:00:00 · 286 阅读 · 0 评论 -
常用排序算法-归并排序
归并排序是分治法运用的一个有效算法,大致分为两个部分,第一个是将一个无序表不断的二分,对得到的子部分继续二分,直到细分至每一个子部分都只有一个元素;第二个部分便是由最小的子部分开始,逐步向上进行归并,具体来说就是实现两个有序数组的合并。原创 2017-05-07 23:00:28 · 342 阅读 · 0 评论 -
常用数据结构-数组实现静态链表
1. 静态链表简介 比起经常使用的动态链表,静态链表似乎用的不多,不过也有一些体现,比如FAT文件系统,所谓的静态和动态,就是指内存管理的动态静态,换言之,使用malloc和free,new和delete动态分配的链表,为动态链表,使用数组等方法则是静态链表。资料中说静态链表常用于没有指针的语言中(如Basic,Fortran)等,但是我学习C++,去学习静态链表更多的是为了原创 2017-06-09 14:38:57 · 2947 阅读 · 0 评论 -
常用排序算法-简单选择排序
1. 简单排序简介 如果提到最简单的排序,一般我是会想到冒泡排序的,之所以不会想到简单排序,是因为简单排序实在——太简单了,简单到让人不相信这个算法有实际用处。简单排序的原理非常简单,就是简单的每次找到待排序数组中最小的,然后把它挑出来,最后不就搞完了嘛。 这一段话说了好多“简单”啊~2. 简单排序基本流程简单排序的实现流程跟原理是一样简单的原创 2017-06-15 11:58:36 · 382 阅读 · 0 评论 -
常用数据结构-二叉树的链式存储、建立和遍历
1. 链式二叉树简介 二叉树是数据结构——树的一种,一般定义的树是指有一个根节点,由此根节点向下分出数个分支结点,以此类推以至产生一堆结点。树是一个具有代表性的非线性数据结构,所谓的非线性,就是指不再是一对一,而是一对多,不过我觉得其实无论是线性还是非线性,无非就是指针指向的对象个数而已,毕竟双向链表中,一个结点也是指向了两个结点,这是不是也是一对多呢?由此观之,数据结构就是结点原创 2017-06-15 10:41:43 · 1032 阅读 · 0 评论