排序最关键的地方 1复杂度 (复杂度包括时间复杂度与空间复杂度) 2稳定性 3输入数据的特征是否会对复杂度造成影响即排序算法的复杂度和输入数据的特征有关系 插入排序法 我们只将大于temp的值向后移动,已经拍好序的元素不会直接交换位置,所以这个排序是是分稳定的 时间复杂度 1+2+3+4+……+n- ...
分类:
编程语言 时间:
2020-05-13 19:57:53
阅读次数:
65
一、常见的排序算法分类 二、各种算法的时间复杂度 三、冒泡排序 冒泡排序(BubbleSorting)的基本思想是:通过对待排序序列从前向后(从下标较小的元素开始),依次比较相邻元素的值,若发现逆序则交换,使值较大的元素逐渐从前移向后部,就象水底下的气泡一样逐渐向上冒。 小结上面的图解过程: (1) ...
分类:
编程语言 时间:
2020-05-13 19:54:58
阅读次数:
58
相关概念 快速排序法 Quicksort 也是一个分治思想的算法. 对一个子数组 A[p: r] 进行快速排序的三步分治过程: 1, 分解. 将数组 A[p : r] 被划分为两个子数组(可能为空) A[p : q-1] 和 A[q+1 : r] , 使得 A[p : q-1] 中的每一个元素都小于 ...
分类:
编程语言 时间:
2020-05-13 14:01:05
阅读次数:
62
线性结构的主要内容有: 数组、栈、队列、单链表、循环链表、双链表、递归、排序算法 。 (1)数组的基本使用 : 1.1新建数组 : package array; import java.util.Arrays; public class TestArray1 { public static void ...
分类:
其他好文 时间:
2020-05-12 17:25:23
阅读次数:
55
一、什么是归并排序归并排序(MERGE-SORT)是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(DivideandConquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并。二、图解先将无序数组分割,经过排序,将两个有序数组再拼接。三、原理归并排序的原理就是合并两个有序数组。合
分类:
编程语言 时间:
2020-05-11 23:19:11
阅读次数:
67
数据结构与算法(Python) 常见的内置数据结构和算法 数据结构/算法 语言内置 内置库 线性结构 链式结构 字典结构 集合结构 排序算法 二分算法 堆算法 缓存算法 ...
分类:
编程语言 时间:
2020-05-11 21:46:47
阅读次数:
74
HTML5学堂-码匠:数据快速的计算与排序,与前端页面性能有直接的关系。由于排序的算法有很多,在本次“算法系列”的分享当中,我们先从简单易上手的选择排序法开始,其它的排序算法会随后陆续跟大家一起分享。 算法的基本概念 算法是什么,它有何作用 为解决一个问题而采取的方法和步骤,称为算法。我们可以把算法 ...
分类:
编程语言 时间:
2020-05-11 10:27:40
阅读次数:
65
拓扑排序 拓扑序列: 设G=(V,E)是一个具有n个顶点的有向图,V中顶点序列V1,V2,......,Vn满足若从顶点Vi到Vj有一条路径,则在顶点序列中顶点Vi必须在顶点Vj之前。则称这样的顶点序列为一个拓扑序列 拓扑排序 对一个无环有向图(AOV网)构造拓扑序列的过程 方法 从AOV网中选择一 ...
分类:
编程语言 时间:
2020-05-11 01:09:59
阅读次数:
72
HTML5学堂-码匠:本期继续走入算法 —— 冒泡排序法。冒泡排序算法相对简单,容易上手,稳定性也比较高,算是一种较好理解的算法,也是面试官高频提问的算法之一。 Tips:关于“算法”及“排序”的基础知识,在此前“选择排序法”中已详细讲解,可点击文后的相关文章链接查看,在此不再赘述。 冒泡排序法的原 ...
分类:
编程语言 时间:
2020-05-10 21:19:59
阅读次数:
58
堆排序(升序为例) 思路: 1. 首先要建一个大顶堆 2. 交换堆顶元素与最后一个元素,堆的size 1 3. 重复第二步,直至堆中只有元素一个 \ 最好、最坏、平均时间复杂度:O(nlogn) \ 空间复杂度: O(1) \ 稳定性: 不稳定 ...
分类:
编程语言 时间:
2020-05-10 19:07:12
阅读次数:
68