数据的排序是在解决实际问题时经常用到的步骤,也是数据结构的考点之一,下面介绍10种经典的排序方法。 首先,排序方法可以大体分为插入排序、选择排序、交换排序、归并排序和桶排序四大类,其中,插入排序又分为直接插入排序、二分插入排序和希尔排序,选择排序分为直接选择排序和堆排序,交换排序分为冒泡排序和快速排 ...
分类:
编程语言 时间:
2019-11-23 21:55:58
阅读次数:
69
冒泡排序 冒泡排序算法又称交换排序算法,是从观察水中气泡变化构思而成,原理是从第一个元素开始比较相邻元素的大小,若大小顺序有误,则对调后再进行下一个元素的比较,就仿佛气泡逐渐从水底逐渐冒升到水面一样。如此扫描一次之后就可以确保最后一个元素位于正确的位置。接着再逐步进行第二次扫描,直到完成所有元素的排 ...
分类:
编程语言 时间:
2019-11-22 20:53:33
阅读次数:
86
一、直接插入排序 直接插入排序 和折半插入排序 ,图示是一样的,但是在进行插入的时候就看出效率 了 。 折半插入排序:采用折半查找插入; 直接插入排序:一次比较插入。(代码中很明显) 数据量大折半插入的效率高点 //直接插入排序//算法思想:每趟将一个待排的关键字按照其值的大小插入到已经排好的部分有 ...
分类:
编程语言 时间:
2019-11-21 17:02:37
阅读次数:
89
排序算法的稳定性 排序的稳定性,指原有数据相同值的原始次序不变。 可以: 冒泡排序遇到相等的数不交换即可做到稳定。 插入排序,遇到相等的数即停止比较,插入数组。 归并排序 merge 过程中,遇到相等的值先填入左区域的值就可以做到稳定。 不可以: 选择排序不能做到稳定性,选择数值的时候交换数字是会打 ...
分类:
编程语言 时间:
2019-11-20 12:16:42
阅读次数:
73
冒泡排序细节的讲解与复杂度分析时间复杂度O(N^2),额外空间复杂度O(1) 选择排序的细节讲解与复杂度分析时间复杂度O(N^2),额外空间复杂度O(1) 插入排序的细节讲解与复杂度分析时间复杂度O(N^2),额外空间复杂度O(1) 剖析递归行为和递归行为时间复杂度的估算一个递归行为的例子maste ...
分类:
其他好文 时间:
2019-11-18 18:27:24
阅读次数:
57
冒泡排序 冒泡排序比较简单,但是容易出现冗余的循环,即使是一个已经排序的数组传入仍然需要遍历 O(n ^ 2)。 选择排序 选择排序时间复杂度也是 O(n ^ 2)。 插入排序 插入排序,有可能是 O(n) 也有可能是 O(n^2),和数据是否已经有序有关。 归并排序 归并排序使用了递归的方式,利用 ...
分类:
编程语言 时间:
2019-11-16 23:49:54
阅读次数:
153
堆排其实就是选择排序,只不过用了完全二叉树特性。 堆排思想 : 利用完全二叉树特性建堆和重复选择调整来得到有序数组。 完全二叉树有什么特性呢? 节点左对齐 > 层序遍历不会出现空,可以用数组表达(访问效率高) 那么可以将它映射到数组上,并且遵循一个规律: 设i为当前节点索引, i->left = 2 ...
分类:
其他好文 时间:
2019-11-16 17:58:48
阅读次数:
137
今天去面试的时候又考了排序算法,排序这个东西,你以为你懂了,但是真正去写的时候才会发现好多细节自己都模棱两可,我写着写着就全都乱了,回来之后赶紧重新写一遍。 (1)冒泡排序 public void bubbleSort(int a[]){ int temp=0; for(int i=0;i<a.le ...
分类:
编程语言 时间:
2019-11-16 12:41:32
阅读次数:
99
1 常用的数据结构 2 高级数据结构 3 排序 4 查找 5 深度与广度优先搜索 6 动态规划 7 设计模式 数据结构和算法 1 常用的数据结构 栈 数组、字符串 队列 链表 树 双端队列 2 高级数据结构 优先队列 图 前缀树 线段树 树状数组 3 排序 基本排序 冒泡排序 选择排序 插入排序 希 ...
分类:
编程语言 时间:
2019-11-16 10:48:43
阅读次数:
92
统计字符串中某个字符串出现的次数 字节数组复制MP3 字节流复制文本文件 数组冒泡排序 数组选择排序 ...
分类:
编程语言 时间:
2019-11-15 20:48:19
阅读次数:
77