最近在忙着找工作,以前看的排序算法都忘记了,悲剧啦T T现在来回顾一下吧。 这边推荐一个算法可视化的网站,非常有用。http://visualgo.net/ 一.插入排序的思想(Wikipedia): 它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。插 ...
分类:
编程语言 时间:
2016-08-05 13:29:02
阅读次数:
131
*****选择排序***** 方法描述:首先找到第一个最小的数,和第一个数交换;然后从剩下的找出最小的与第二个交换,以此类推。效率: 长度为N的数组,大约N2/2比较,N次交换特点: 1.运行时间和输入无关,有序数组,全部相等的数组,随机数组所用时间一样,没有充分利用输入的初始状态。 2.数据移动最 ...
分类:
编程语言 时间:
2016-07-30 19:53:47
阅读次数:
320
插入类排序
直接插入排序
希尔排序
选择类排序
简单选择排序
堆排序
交换类排序
冒泡排序
快速排序
归并类排序
归并排序...
分类:
编程语言 时间:
2016-07-19 23:55:27
阅读次数:
525
选择排序选择排序的基本思想是对待排序的记录序列进行n-1遍的处理,第i遍处理是将L[i..n]中最小者与L[i]交换位置。这样,经过i遍处理之后,前i个记录的位置已经是正确的了。 选择排序是不稳定的。算法复杂度是O(n ^2 )。package mainimport (
"fmt"
)type SortInterface interface {
sort()
}
type Sorto...
分类:
编程语言 时间:
2016-07-19 11:15:08
阅读次数:
204
1. 插入排序
算法步骤叙述:对于一个给定的序列, 初始时假设第一个记录自成一个有序序列, 其余记录为无序序列。接着从第二个记录开始, 按照记录的大小依次将当前处理的记录插入到其之前的有序序列之中,直至最后一个记录插入到有序序列中为止。
插入排序图示:
初始数组为:5,2,4,6,1,3
java实现:
/** * 插入排序 * @...
分类:
编程语言 时间:
2016-07-13 16:07:11
阅读次数:
140
1、冒泡排序 //冒泡排序 void bubbleSort(int A[], int n) { bool flag = false; for (int i = n - 1; i > 0; i--) { //注意i,j的终止条件 for (int j = 0; j < i; j++) { if (A[ ...
分类:
编程语言 时间:
2016-07-13 11:50:41
阅读次数:
174
线性时间排序 各种排序算法总结已经介绍了几种能在O(n*log(n))时间内培训n个数的算法。归并排序和堆排序达到了最坏情况下的上界;快速排序在平均情况下达到该上界。这些算法都有一个有趣的性质:在排序的最终结果中,各元素的次序依赖于它们之间的比较。这类算法为比较算法,还有一类算法是线性时间复杂度的排 ...
分类:
编程语言 时间:
2016-06-21 09:16:48
阅读次数:
183
各种排序算法总结已经介绍了几种能在O(n*log(n))时间内培训n个数的算法。归并排序和堆排序达到了最坏情况下的上界;快速排序在平均情况下达到该上界。这些算法都有一个有趣的性质:在排序的最终结果中,各元素的次序依赖于它们之间的比较。这类算法为比较算法,还有一类算法是线性时间复杂度的排序算法,有计数 ...
分类:
编程语言 时间:
2016-06-19 15:33:42
阅读次数:
181
10种排序算法总结 排序算法有很多,所以在特定情景中使用哪一种算法很重要。为了选择合适的算法,可以按照建议的顺序考虑以下标准: (1)执行时间 (2)存储空间 (3)编程工作 对于数据量较小的情形,(1)(2)差别不大,主要考虑(3);而对于数据量大的,(1)为首要。 主要排序法有: 一、冒泡(Bu ...
分类:
编程语言 时间:
2016-06-15 09:11:04
阅读次数:
179