
算法
文章平均质量分 53
异次元程序员
一个默默在北方流浪的骚年
求关注求点赞!
个人邮箱:igetjzc@outlook.com
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
冒泡排序实现--图解/实例/java/php
冒泡排序 概念 在接触程序的过程中,我们经常会使用到各种各样的排序算法来满足我们的需求 冒泡排序就是众多排序算法中一种简单好用的算法 冒泡排序以其像气泡一样将元素交换到顶端的形式从而命名冒泡排序 原理:(以升序为例) 依次比较相邻的两个数,将小数放前,大数放后,一直到第N个元素,然后重复该操作,一直到第N-1个元素,循环,直到第一个元素。 因为每一轮比较下来,我们都会获得一个当前剩余数组的最...原创 2018-11-06 15:53:11 · 504 阅读 · 0 评论 -
插入排序实现--图解/实例/java/php
插入排序 在一个有序的数组中,插入新的数据,实现这种的操作就是插入排序 概念 原理:从第一个元素开始,左边视为已排序数组,右边视为待排序数组,从左往右依次取元素,插入左侧已排序数组,对插入新元素的左侧数组重新生成有序数组 需要注意的是,在往有序数组插入一个新元素的过程中,我们可以采用按顺序循环比较,也可以通过折半查找法来找到新元素的位置,两种方式的效率取决于数组的数据量 最坏时间复杂度O...原创 2018-11-06 18:00:07 · 3784 阅读 · 5 评论 -
快速排序实现--图解/实例/java/php
快速排序 概念 选择一个关键值,通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另一部分的所有数据小,然后再按此方法分别对这两组数据排序,最终获得一个有序数组 最坏时间复杂度O(n^2) 最好时间复杂度O(nlogn) 平均时间复杂度O(nlogn) 快速排序是一种不稳定排序算法 图解 以初始数组 = {5,3,6,1,7},为例,对其排序得到一个升序数组 取第...原创 2018-11-08 16:57:11 · 172 阅读 · 0 评论 -
堆排序实现 -- 图解/实例/java/php
堆排序 前言:利用堆这种数据结构所实现的排序算法 概念 将待排序数组构造成一个大顶堆,然后依次交换根节点和末尾最小值(由变量i定位),最终得到一个正序的数组。 需要逆序的则通过构造小顶堆来实现 平均时间复杂度O(nlogn) 空间复杂度O(1) 堆 定义:heap,堆总是一棵完全二叉树,堆中某个节点的值总是大于或小于其子结点的值。 根节点为最大值的堆,称为大顶堆(大根堆),根节点...原创 2019-03-06 14:23:07 · 539 阅读 · 0 评论 -
简单理解KMP - 三分钟复习算法Go
KMP - 字符串匹配算法 前言:其实本来没有打算写KMP算法,毕竟这种课本上的基础算法,想必大家也都了解。但是某夜刷题遇到时竟苦苦思索不得正解,网上文章又大多杂乱无章,或代码不得正解,故写下此篇以便来日复习 代码先行 算法就是拿来用的,没有代码的算法算什么 以下是用Go语言实现的KMP算法 func kmp(haystack string, needle string) int { ...原创 2019-07-07 10:29:08 · 567 阅读 · 1 评论