数据结构与算法
老郑来了
生命不息,折腾不止
展开
-
数据结构与算法——冒泡排序
/** * 冒泡排序是一种简单的排序 * 它的核心思想是遍历若干次要排序的数列,每次遍历时, * 它都会从前往后依次的比较相邻两个数的大小; * 如果前者比后者大,则交换它们的位置。 * 这样,一次遍历之后,最大的元素就在数列的末尾! * 采用相同的方法再次遍历时,第二大的元素就被排列在最大元素之前。重复此操作,直到整个数列都有序为止! * 冒泡排序的时间复杂度是O(...原创 2019-03-09 09:03:46 · 175 阅读 · 0 评论 -
数据结构与算法——直接插入排序
public class InsertSort { /** * 插入排序就是把一组数字分成两部分, * 一部分是排好顺序的,另一部分是没有排好顺序的, * 从没有排好顺序的那组数字中获取数字,把它插入到已经排好的顺序的那部分数字中, * 在插入到已经排好顺序的那部分数字时,让这个插入进来的数字与已经排好顺序的数字进行比较, * 保证已经排好的顺序的那部分数字不被打乱,重...原创 2019-03-09 09:55:18 · 182 阅读 · 0 评论 -
数据结构与算法——数组
定义 数组是数据结构中很基本的结构,很多编程语言都内置数组。 在java中当创建数组时会在内存中划分出一块连续的内存,然后当有数据进入的时候会将数据按顺序的存储在这块连续的内存中,在java中数组下标从0开始。当需要读取数组中的数据时,需要提供数组中的索引,然后数组根据索引将内存中的数据取出来,返回给读取程序。在Java中并不是所有的数据都能存储到数组中,只有相同类型的数据才可以一起存储到数组中。...原创 2019-03-04 15:53:00 · 236 阅读 · 0 评论 -
数据结构与算法——链表
定义 链表(Linked list)是一种线性表,但是并不会在物理存储上按线性的顺序存储数据,而是在每一个节点里存到下一个节点的指针(Pointer)。由于不必须按顺序存储,链表的插入和删除操作可以达到O(1)的复杂度。 单向链表 单向链表(单链表)是链表的一种,它由节点组成,每个节点都包含下一个节点的指针,下图就是一个单链表,表头为空,表头的后继节点是"结点10"(数据为10的结点),“节点...原创 2019-03-04 16:12:22 · 230 阅读 · 0 评论 -
数据结构与算法——快速排序
/** * * 1.在待排序的元素任取一个元素作为基准(通常选第一个元素,但最的选择方法是从待排序元素中随机选取一个作为基准),称为基准元素; * 2.将待排序的元素进行分区,比基准元素大的元素放在它的右边,比其小的放在它的左边; * 3.对左右两个分区重复以上步骤直到所有元素都是有序的。 * 快速排序是一种不稳定的算法 * 快速排序的时间复杂...原创 2019-03-16 09:47:51 · 133 阅读 · 0 评论 -
数据结构与算法——希尔排序
package eightSort; import java.util.Arrays; public class shellSort { /** * 希尔排序(shell sort)这个排序方法又称为缩小增量排序,是1959年D·L·Shell提出来的。 * 该方法的基本思想是:设待排序元素序列有n个元素,首先取一个整数step(小于n)作为间隔将全部元素分为st...原创 2019-03-16 13:30:16 · 216 阅读 · 0 评论 -
数据结构与算法——选择排序
package eightSort; import java.util.Arrays; public class selectSort { /** * 选择排序(Selection sort)是一种简单直观的排序算法。 * 它的基本思想是:首先在未排序的数列中找到最小(or最大)元素,然后将其存放到数列的起始位置; * 接着,再从剩余未排序的元素中继续...原创 2019-03-16 21:19:29 · 234 阅读 · 0 评论 -
数据结构与算法——堆排序
package eightsort; import java.util.Arrays; /** * 堆排序的基本思想 * 1.初始化堆:将数列a[1...n]构造成最大堆。 * 2.交换数据:将a[1]和a[n]交换,使a[n]是a[1...n]中的最大值;然后将a[1...n-1]重新调整为最大堆。 接着,将a[1]和a[n-1]交换,使a[n-1]是a[1...n-1]中的最大值;然...原创 2019-04-21 20:04:45 · 182 阅读 · 0 评论