常用排序算法、时间复杂度、实现思路
2015-02-12 14:35
337 查看
冒泡排序 O(n^2) : 冒泡排序也是最简单最基本的排序方法之一。冒泡排序的思想很简单,就是以此比较相邻的元素大小,将小的前移,大的后移,就像水中的气泡一样,最小
的元 素经过几次移动,会最终浮到水面上。
for (int i
= 0; i < arr.length - 1; i++) {
for (int j
= 0; j < arr.length - i - 1; j++) {
if (arr[j]
> arr[j + 1]) {
int t
= arr[j + 1];
arr[j + 1] = arr[j];
arr[j] = t;
}
}
}
快速排序O(n log n) : 快速排序采用的思想是分治思想,其核心算法是分区
操作,即如何调整基准的位置以及调整返回基准的最终位置以便分治递归。
插入排序 O(n^2) :将新来的元素按顺序放入一个已有的有序序列当中。
选择排序 O(n^2) :第i 趟简单选择排序是指通过 n-i次关键字的比较,从n-i+1个记录中选
出关键字最小的记录,并和第 i 个记录进行交换。共需进行 i-1趟比较,直到所有记录排序
完成为止
的元 素经过几次移动,会最终浮到水面上。
for (int i
= 0; i < arr.length - 1; i++) {
for (int j
= 0; j < arr.length - i - 1; j++) {
if (arr[j]
> arr[j + 1]) {
int t
= arr[j + 1];
arr[j + 1] = arr[j];
arr[j] = t;
}
}
}
快速排序O(n log n) : 快速排序采用的思想是分治思想,其核心算法是分区
操作,即如何调整基准的位置以及调整返回基准的最终位置以便分治递归。
插入排序 O(n^2) :将新来的元素按顺序放入一个已有的有序序列当中。
选择排序 O(n^2) :第i 趟简单选择排序是指通过 n-i次关键字的比较,从n-i+1个记录中选
出关键字最小的记录,并和第 i 个记录进行交换。共需进行 i-1趟比较,直到所有记录排序
完成为止
相关文章推荐
- 有一堆扑克牌,其中某张牌的张数超过了扑克牌总数的一半,请找到这张牌。写出算法思路、代码实现和算法的时间复杂度,要求算法尽可能高效。假设给定一个扑克牌的数组poker和它的大小n,请返回所求的扑克牌。
- 最小堆得实现;优先队列的堆实现;堆排序的时间复杂度nlgn;
- 练习系列 - 3、设计包含min函数的栈,push、pop、min的时间复杂度都为O(1),仿照APR_RING采用宏实现
- 冒泡排序(工程中很少使用,时间复杂度太差了),linux纯C实现
- [LeetCode] Candy (分糖果),时间复杂度O(n),空间复杂度为O(1),且只需遍历一次的实现
- javascript中打印当前的时间实现思路及代码
- lucene实现 某段时间内 多个存储字段 多关键字的查询 并且加入排序规则 思路
- php格式化时间戳显示友好的时间实现思路及代码
- FFT快速傅里叶变换以O(NlogN)的时间复杂度实现大数乘
- Java从服务器上获取时间动态显示在jsp页面实现思路
- 定义一个栈的数据结构,要求实现一个min函数,每次能够得到栈的最小值,并且要求Min的时间复杂度为O(1)
- (C#)实现时间复杂度为O(n)空间复杂度为O(1)的数组中奇偶数分离
- 在柱状图中找最大矩形——O(n)时间复杂度java实现
- 常用排序算法的时间复杂度与空间复杂度
- 常用排序算法的实现和复杂度的分析
- 插入排序C语言实现及其时间复杂度
- 常用排序算法以及时间复杂度
- js用Date对象处理时间实现思路及代码
- 排序算法的C语言实现以及各个算法的时间复杂度和空间复杂度分析(冒泡排序)
- 定义一个栈的数据结构,要求实现一个min函数,每次能够得到栈的最小值,并且要求Min的时间复杂度为O(1)