冒泡排序(Bubble Sort):是一种直观的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。 算法步骤: 1, ...
分类:
编程语言 时间:
2020-07-12 12:27:34
阅读次数:
118
1 概述 2 待排序记录的存储方法 3 排序算法的效率评价指标 4 时间效率 5 排序速度(比较次数与移动次数) 6 空间效率 7 占内存辅助空间的大小 8 稳定性 9 A和B的关键字相同,在排序之后先后顺序保持不变 10 11 内部排序 12 插入排序 13 直接插入排序 14 利用顺序查找 15 ...
分类:
其他好文 时间:
2020-07-12 12:12:05
阅读次数:
72
归并排序 归并排序是建立在归并操作上的一种有效的排序算法。该算法是采用分治法的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为2-路归并。 作为一种典型的分而治之思想的算法应用,归并排序的实现由两种方法: 自 ...
分类:
编程语言 时间:
2020-07-12 12:09:18
阅读次数:
65
选择排序 是一种简单直观的排序算法,它也是一种交换排序算法,和冒泡排序有一定的相似度,可以认为选择排序是冒泡排序的一种改进。 表现最稳定的排序算法之一,因为无论什么数据进去都是O(n2)的时间复杂度,所以用到它的时候,数据规模越小越好。 原理 首先在未排序序列中找到最小(大)元素,存放到排序序列的起 ...
分类:
编程语言 时间:
2020-07-11 22:56:06
阅读次数:
65
##一、归并排序 该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。 分割: 将数组从中点进行分割,分为左、右两个数组 递归分割左、右数组,直到数组长度小于2 归并: 如果需要合并,那么左右两数组已经有序了。 创建一个临时存储数组temp,比较两数组第一个元素,将较小的 ...
分类:
编程语言 时间:
2020-07-11 22:55:51
阅读次数:
61
算法介绍 tarjan tarjan算法要求使有向图。 Tarjan就是一个辅助作用,把有环图缩为无环图,也就是将强联通分量缩成一个点。 几个数组 dfn时间戳,low仍在栈中的最小时间戳,dag缩点后的数组,ins是否在栈中。 void tarjan(int x) { dfn[x]=low[x]= ...
分类:
编程语言 时间:
2020-07-11 12:48:47
阅读次数:
95
字节跳动提前批 时间:2020-07-09 18:00-19:00 内容 项目 背景:基于ZooKeeper的配置中心 问题: 项目的背景 如何实现 分布式锁的实现 Java基础 问题: HasMap的数据结构 HashMap如何解决哈希冲突 算法 常见的排序算法有哪些 快排的时间复杂度,最差的时间 ...
分类:
其他好文 时间:
2020-07-09 22:35:20
阅读次数:
87
快速排序 本篇内容共分两部分:分而治之,快速排序。 分而治之(divide and conquer,D & C)——种著名得递归式问题解决办法。 快速排序是一种排序算法其速度比选择排序快得多。 1. 分而治之 首先,我们申明一下D&C的工作原理: 找出简单的基线条件(跳出无限循环的条件) 确定如何缩 ...
分类:
编程语言 时间:
2020-07-09 01:02:14
阅读次数:
77
排序规则: 1、申请空间,使其大小为两个已经排序序列之和,该空间用来存放合并后的序列 2、设定两个指针,最初位置分别为两个已经排序序列的起始位置 3、比较两个指针所指向的元素,选择相对小的元素放入合并空间,并移动指针到下一位置。 4、重复步骤3直到指针达到序列末尾 5、将另一序列剩下的所有元素直接复 ...
分类:
编程语言 时间:
2020-07-08 15:17:06
阅读次数:
61
一、选择排序介绍 1、基本介绍 选择式排序也属于内部排序法,是从欲排序的数据中,按指定的规则选出某一元素,再依规定交换位置后达到排序的目的。 2、选择排序思想 选择排序(select sorting)也是一种简单的排序方法。它的基本思想是: 第一次从arr[0]~arr[n-1]中选取最小值,与ar ...
分类:
编程语言 时间:
2020-07-06 20:22:09
阅读次数:
72