摘要:
前言 在开发过程中,人人都会用到排序,每种编程语言也会提供排序函数,可是编程语言的排序函数运用环境复杂,必须得达到最大程度的兼容。我们得怎么实现一种通用的,高效的排序函数呢? 正文 1.最通用的排序算法 如下图所示: 在我们选取的排序函数中,O(n2)时间复杂度适合小规模的排序,O(nlogn)时间 阅读全文
摘要:
前言 在高考结束以后,所有人都在等着成绩,政府部门面对几百万的数据,你知道他们是怎么算名次的么?上一次学到递归排序以及快排,确实,用他们可以实现,可是他们的时间复杂度最低都是O(nlogn)。今天我们来看看有没有更快捷的排序方法? 正文 桶排序 原理: 将需要排序的数据分到几个有序的桶里,每个桶里的 阅读全文
摘要:
前言 在数据排序的算法中,不同数据规模应当使用合适的排序算法才能达到最好的效果,如小规模的数据排序,可以使用冒泡排序、插入排序,选择排序,他们的时间复杂度都为O(n2),大规模的数据排序就可以使用归并排序和快速排序,时间复杂度为O(nlogn)。今天我们就来看一下归并排序和快速排序。 正文 归并排序 阅读全文
摘要:
前言 现在IT这块找工作,不会几个算法都不好意思出门,排序算法恰巧是其中最简单的,我接触的第一个算法就是它,但是你知道怎么分析一个排序算法么?有很多时间复杂度相同的排序算法,在实际编码中,那又如何选择呢?下面我们带着问题一起学习一下。 正文 一、常见经典的排序方法 (图片来自于一像素) 插入排序 一 阅读全文
摘要:
前言 盗梦空间想象大多数人都看过:电影讲述的是主人公诺兰进入希里安·墨菲梦境植入想法的行动。为了向希里安·墨菲梦植入理念,影片进入四层梦境,即所谓:“梦中的梦中 梦中人的梦中”。 有一对兔子,每隔三个月会产下一对小兔子,小免子每隔三个月,也会产生新的一对免子,问36个月后,共有多少对兔子。 诸如此类 阅读全文
摘要:
前言 队列是一种非常实用的数据结构,类似于生活中发排队,可应用于生活,开发中各个方面,比如共享打印机(先请求先打印),消息队列。你想知道他们是怎么工作的么。那就来一起学习一下队列吧 正文 一、队列的定义? 1.一种先进先出的线性表 2.只允许入栈 push()和出栈 pop() 在后端(称为rear 阅读全文
摘要:
前言 栈最为一种的常用的数据结构,用“桶”来形容最合适不过;今天我们就来学习一下 正文 一、栈的定义? 1.“后进先出,先进后出”的数据结构。2.从操作特性来看,是一种“操作受限”的线性表,只可以在一端插入和删除数据。 二、为什么需要栈? 1.任何数据结构都是对特定应用场景的抽象,栈是一种操作受限的 阅读全文
摘要:
前言 想成功你就得有决心,并有方法和技巧的付出精力。 正文 如何优雅的写出链表代码? 一、理解指针或引用的含义 将某个变量(对象)赋值给指针(引用),实际上就是就是将这个变量(对象)的地址赋值给指针(引用)。 指针中存储了这个变量的内存地址,指向了这个变量,通过指针就能找到这个变量 p—>next 阅读全文
摘要:
前言 链表(Linked list)比数组稍微复杂一点,在我们生活中用到最常见的应该是缓存,它是一种提高数据读取性能的技术,常见的如cpu缓存,浏览器缓存,数据库缓存等。今天我们就来学习一下链表 正文 一、链表的定义? 1.一种线性表(数据排成像一条线一样的结构。每个线性表上的数据最多有前后两个方向 阅读全文
摘要:
前言 数组看似简单,但掌握精髓的却没有多少;他既是编程语言中的数据类型,又是最基础的数据结构; 一个小问题: 为什么数据要从0开始编号,而不是 从1开始呢? 正文 带着问题进入学习 如何实现随机访问? 什么是数组? 数组(array)是一种线性表数据结构,它用一组连续的内存空间来储存一组具有相同类型 阅读全文