任何比较排序在最好情况下都要经过Ω(nlgn),即比较排序的下界为Ω(nlgn)。 合并排序和堆排序都是渐进最优的。 要突破Ω(nlgn),就要进行非比较排序。计数排序、基数排序和桶排序都有非比较的一些操作来确定排序顺序,它们可以达到线性运行时间。 这三种排序都是以空间换时间。应用的不广,先不细看了 ...
分类:
编程语言 时间:
2018-02-06 01:26:19
阅读次数:
167
原理:依次比较相邻的两个元素,每次比较完毕最大的一个数跑到本轮的末尾(开始)。时间复杂度:O(n^2 ) 实现步骤:假设存在数组:72, 54, 59, 30, 31, 78, 2, 77, 82, 72 第一轮比较相邻两个元素,如果左边元素大于右边元素,则交换。 72和54比较的结果就是,54在前 ...
分类:
编程语言 时间:
2018-01-20 17:47:35
阅读次数:
164
任何比较排序(归并排序,插入排序等等)的时间复杂度在最坏的情况下都需要做Ω(n * lgn)次比较,而这里的的计数排序由于它不是基于比较排序的思路,所以它的复杂度不收这个限制,它的时间复杂度为Θ(n),为线性时间。同时,计数排序一个重要的性质就是它是稳定的,也就是说,对于两个相同的数来说,在输入数组 ...
分类:
编程语言 时间:
2018-01-14 15:16:05
阅读次数:
216
Java为我们提供了丰富的jar包支持,这其中很多都是我们日常开发所必须的,了解这些包和类,十分有助于我们的开发,深度了解源代码也有助于我们代码的优化和提高;JDK1.8为我们提供了多于4000个类与接口;我们主要从功能模块和特性来认识这些类和接口;如下: 用于比较的两个接口: Comparable ...
分类:
其他好文 时间:
2018-01-13 17:02:09
阅读次数:
156
冒泡排序: 选择排序:选择某个索引位置的元素,然后和后面元素一次比较,若大于则交换位置,经过第一轮比较排序后可得出最小值,然后使用同样的方法把剩下的元素逐个比较即可。选择排序每一轮只进行一次交换,相对于冒泡排序效率高一些。 数组的搜索算法:从指定数组中去搜索某一个元素的索引是多少。 方式一:线性搜索 ...
分类:
编程语言 时间:
2017-12-04 13:14:05
阅读次数:
162
一.冒泡法 1.基本思路:每次将相邻两个数比较,将小的调到前面,最大的数沉底,即成为最后一个,而小的数上升。如果有n个数,要进行n-1趟比较,在第一趟比较中要进行n-1次两两比较,在第j趟比较中要进行n-j次两两比较。 2.基本结构 二.选择法 1.基本思路:每次从左至右扫描序列,找出最小值。 2. ...
分类:
编程语言 时间:
2017-11-30 17:17:11
阅读次数:
166
SSBD 简介:一个高性能的支持丰富数据结构的 NoSQL 数据库, 可用于替代 Redis. 详情:SSDB 是一个 C++ 开发的 NoSQL 数据库, 使用 Google 公司开源的 LevelDB 引擎作为底层的存储引擎. Redis 是一个 C 语言开发的内存 NoSQL 数据库。SSDB ...
分类:
数据库 时间:
2017-11-25 23:42:40
阅读次数:
294
1.排序的分类 排序算法分为: 内部排序,内部排序是数据记录在内存中进行排序 外部排序,外部排序是因为排序的数据很大,内存一次不能容纳全部的排序记录,在排序过程中需要访问外存。 内部排序又可分为: 比较排序,时间复杂度O(nlogn) ~ O(n^2),主要有:冒泡排序,选择排序,插入排序,归并排序 ...
分类:
编程语言 时间:
2017-11-14 19:31:04
阅读次数:
177
冒泡排序(英语:Bubble Sort)是一种简单的排序算法。它重复地遍历要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。遍历数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。 冒泡排序算法的 ...
分类:
编程语言 时间:
2017-11-12 14:54:42
阅读次数:
146
Comparable & Comparator 都是用来实现集合中元素的比较、排序的,只是 Comparable 是在集合内部定义的方法实现的排序,Comparator 是在集合外部实现的排序,所以,如想实现排序,就需要在集合外定义 Comparator 接口的方法或在集合内实现 Comparabl ...
分类:
其他好文 时间:
2017-10-29 18:44:44
阅读次数:
190