随笔分类 - algorithm
摘要:转载自http://www.cnblogs.com/codingmylife/archive/2012/10/21/2732980.html 分析一下常见的排序算法的稳定性,每个都给出简单的理由。 1. 冒泡排序 冒泡排序就是把小的元素往前调或者把大的元素往后调。比较是相邻的两个元素比较,交换也发生
阅读全文
摘要:排序思想: 先将序列分成较多个子序列分别进行排序,再分成较少个子序列分别进行排序,直到最后为一个序列排序。 1. 每隔固定距离选取一个数的方法划分子序。其中间隔距离称为增量。每次子序都排好后,增量减半,增量减少意味着子序数减少,直到增量为1,便是全部的数序了,希尔排序完成。 2. 子序列使用插入排序
阅读全文
摘要:排序思想: 将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。 实现步骤: 选择序列中的某个元素a作为分割标准,那么将序列中小于a的元素放在a的左边,大于a的元素
阅读全文
摘要:排序思想: 数组中相邻元素两两比较,让最大的数浮动到数组最后的位置,其次大的数浮动到数组倒数第二个位置…… 时间复杂度: 其外层循环执行 N 1次。内层循环最多的时候执行N次,最少的时候执行1次,平均执行 (N+1)/2次。 所以循环体内的比较交换约执行 (N 1)(N + 1) / 2 = (N^
阅读全文
摘要:排序思想: 从数组某个位置i开始向后遍历数组,选出最小的一个和第I个位置交换,以此类推,直到从第N个和第N 1个元素中选出最小的放在第N 1个位置。 时间复杂度: 比较次数为 ,所以时间复杂度为O(n^2)
阅读全文
摘要:排序思想 : 遍历数组,用当前元素与之前的序列进行比较,按照排序插入到相应位置上 插入排序算法的时间复杂度: 1. 最好情况:序列有序,顺序相同:O(n) 2. 最坏情况:序列有序,但顺序相反:O(n2) private static void insertSort(int[] arr) { int
阅读全文
浙公网安备 33010602011771号