好久没有看算法相关的东西,把以前的笔记整理一下,当作复习。加油~~//for_wind
名称 | 插入排序 | 合并排序 | 堆排序 | 快速排序 | 计数排序 | 基数排序 | 桶排序 |
思路 | 通过比较在已排序的数组A[1,...,j-1]中插入新数据A[j],形成新的已排序数组A[1,...,j] | (分解)分成2个子序列; (解决)对子序列递归地进行排序 (合并)合并已经排序的子序列 | 先建堆,交换根元素A[i]和A[n],更新保持堆性质,重复以上,直到堆大小从n-1减为2 | (分解)划分 (解决)递归调用 (合并)无,因为就地排序 | 假设元素均介于0到k的整数。 利用数组下标 | 假设n个d位数,每个位数k种可能的值。 按位排序(从低到高) | 假设输入元素独立均匀地分布在区域[0,1)上,划分该区域为桶,分别排序 |
策略 | 增量法 原地排序 稳定 | 分治 非原地排序 稳定 | 原地排序 不稳定 | 分治 原地排序 不稳定 | 特殊假设 非原地排序 稳定 | 特殊假设 非原地排序 稳定 | 特殊假设 非原地排序 稳定 |
运行时间 | o(n^2) | o(nlgn) | o(nlgn) | o(n^2) o(nlgn) | o(k+n) | o(d(k+n)) o(b(r)*r(k+2^r)) | o(n) |
要点 | 合并步骤最关键 | 堆的操作 | 随机化划分 | 确定小于等于i的元素个数 | 先按最低的有效位排序 | ||
应用情况 | 基本已排序 | 优先级队列 | 参考思路中假设 | 参考思路中假设 | 参考思路中假设 |
相关视频《6分钟演示15种排序算法》:点击打开链接 。值得一看,另外一笑。嘻嘻。