
算法与数据结构
Java猿人一枚
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
排序算法(一.基本介绍)
排序算法(一.基本介绍)算法介绍算法分类算法复杂度对比 算法介绍 所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作。排序算法,就是如何使得记录按照要求排列的方法。排序算法在很多领域得到相当地重视,尤其是在大量数据的处理方面。一个优秀的算法可以节省大量的资源。在各个领域中考虑到数据的各种限制和规范,要得到一个符合实际的优秀算法,得经过大量的推理和分析。 排序(S...原创 2019-03-20 18:30:43 · 190 阅读 · 0 评论 -
实现单链表的反转(LeetCode206)
实现单链表的反转--LeetCode206题目几种实现方式具体实现 题目 Reverse a singly linked list. Example: Input:1->2->3->4->5->NULL Output:5->4->3->2->1->NULL 几种实现方式 就地反转法 新建链表,头节点插入法 递归反转法 具体实现 不啰嗦,直...原创 2019-04-16 11:01:18 · 282 阅读 · 0 评论 -
排序算法(九.快速排序)
排序算法(九.快速排序)算法介绍原理图示Java代码实现 快速排序(Quicksort)是对冒泡排序的一种改进。 快速排序由C. A. R. Hoare在1962年提出。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。 算法介绍 设...原创 2019-04-09 15:21:47 · 205 阅读 · 0 评论 -
排序算法(七.希尔排序-改进的插入排序2)
排序算法(七.希尔排序-改进的插入排序2)增量序列介绍knuth增量序列基于knuth增量序列的实现 上篇博客介绍了希尔排序的算法思想及具体实现,本文主要想继续研究下希尔排序中采用的增量序列 (gap序列),上篇博客的实现都是基于Shell 增量序列 即 n/2 实现的。 增量序列介绍 Shell 增量序列 Hibbard 增量序列 Knuth 增量序列 Gonnet 增量序列 Sedgewick...原创 2019-04-02 22:40:12 · 377 阅读 · 0 评论 -
排序算法(六.希尔排序-改进的插入排序1)
排序算法(六.希尔排序-改进的插入排序)基本思想排序过程稳定性Java实现 希尔排序(Shell’s Sort)是插入排序的一种又称“缩小增量排序”(Diminishing Increment Sort),是直接插入排序算法的一种更高效的改进版本。希尔排序是非稳定排序算法。该方法因D.L.Shell于1959年提出而得名。 希尔排序是把记录按下标的一定增量分组,对每组使用直接插入排序算法排序;随着...原创 2019-04-02 20:57:06 · 342 阅读 · 0 评论 -
Java实现单链表
Java实现单链表概念介绍存储方式结点结构Java实现 概念介绍 以“结点的序列”表示线性表称作线性链表(又称单链表),是一种链式存取的数据结构。 用一组地址任意的存储单元存放线性表中的数据元素。链表中的数据是以结点来表示的,每个结点的构成:元素(数据元素的映象) + 指针(指示后继元素存储位置),元素就是存储数据的存储单元,指针就是连接每个结点的地址数据。 存储方式 链接方式存储的线性表简称为链...原创 2019-04-02 11:11:30 · 167 阅读 · 0 评论 -
排序算法(五.插入排序2-二分插入排序和单链表插入排序)
排序算法(四.插入排序2)二分插入排序算法思想Java实现单链表直接插入排序算法描述Java实现 二分插入排序 二分法插入排序,简称二分排序,是在插入第i个元素时,对前面的0~i-1元素进行折半,先跟他们中间的那个元素比,如果小,则对前半再进行折半,否则对后半进行折半,直到left<right,然后再把第i个元素前1位与目标位置之间的所有元素后移,再把第i个元素放在目标位置上。 算法思想 二...原创 2019-04-02 10:57:30 · 454 阅读 · 0 评论 -
排序算法(四.插入排序1-直接插入排序及优化)
排序算法(四.插入排序)算法概述算法思路算法实现 算法概述 有一个已经有序的数据序列,要求在这个已经排好的数据序列中插入一个数,但要求插入后此数据序列仍然有序,这个时候就要用到一种新的排序方法——插入排序法,插入排序的基本操作就是将一个数据插入到已经排好序的有序数据中,从而得到一个新的、个数加一的有序数据,算法适用于少量数据的排序,时间复杂度为O(n^2)。是稳定的排序方法。插入算法把要排序的数组...原创 2019-04-01 12:00:44 · 227 阅读 · 0 评论 -
排序算法(八.归并排序)
排序算法(八.归并排序)归并操作归并算法描述归并排序原理Java实现 归并排序(MERGE-SORT)是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并。 归并排序速度仅次于快速排序,为稳定排序算法,一...原创 2019-04-04 15:35:34 · 201 阅读 · 0 评论 -
排序算法(三.冒泡排序及优化)
排序算法(二.冒泡排序)冒泡排序算法原理算法分析JAVA实现 冒泡排序 冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法。 它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果他们的顺序(如从大到小、首字母从A到Z)错误就把他们交换过来。走访元素的工作是重复地进行直到没有相邻元素需要交换,也就是说该元素已经排序完成。 这个算法的名字由来是因为越大的元素会经由交换慢慢...原创 2019-03-21 15:55:50 · 251 阅读 · 0 评论 -
排序算法(二.选择排序)
排序算法(二.选择排序)选择排序算法思想算法解释算法性能Java实现 选择排序 选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到全部待排序的数据元素排完。 选择排序是不稳定的排序方法。 算法思想 n个...原创 2019-03-20 18:45:37 · 1006 阅读 · 0 评论 -
排序算法(十.计数排序)
排序算法(十.计数排序)算法思想算法过程算法实现 计数排序是一个非基于比较的排序算法,该算法于1954年由 Harold H. Seward 提出。它的优势在于在对一定范围内的整数排序时,它的复杂度为Ο(n+k)(其中k是整数的范围),快于任何比较排序算法。 [1-2] 当然这是一种牺牲空间换取时间的做法,而且当O(k)>O(nlog(n))的时候其效率反而不如基于比较的排序(基于比较的排...原创 2019-05-01 17:02:02 · 175 阅读 · 0 评论