随笔分类 - 排序算法
摘要:1.基数排序思想(桶排序的扩展) 将所有待比较数值统一为同样的数位长度,数位较短的数前面补零。然后,从最低位开始,依次进行一次排序。这样从最低位排序一直到最高位排序完成以后,数列就变成一个有序序列。 2.基数排序的时间复杂度 效率高的稳定性排序 基数排序,空间换时间(元素个数桶的个数每个元素的大小)
        阅读全文
                
摘要:1.归并排序思想(分治:Divide-and-conquer) 将问题分成一些小问题,然后递归求解,将分的各阶段得到的答案"修补"到一起 2.归并排序时间复杂度O(nlogn) 归并排序需要额外的空间开销 3.归并排序 package 算法.排序; import java.util.Arrays; 
        阅读全文
                
摘要:1.快速排序的思想 快速排序是对冒泡排序的一种改进 基本思想**(递归):通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另一部分的所有数据小(基准)**,然后再按此方法,对这两部分数据分别进行快速排序。 2.快速排序的时间复杂度O(nlogn) 3.快速排序的代码实现 pac
        阅读全文
                
摘要:1.希尔排序思想 希尔排序是一种更高效的插入排序方式(相较于简单插入排序),也称缩小增量排序 基本思想:把记录按下标的一定增量分组,对每组使用直接插入排序算法排序;随着增量逐渐减少,每组包含的关键词越来越多,增量减至1时,整个文件恰被分为一组,算法便终止。 优点:避免了简单插入排序时,最后的数移动次
        阅读全文
                
摘要:1.插入排序思想i = 1;while 把n个待排序的元素看作一个有序表和一个无序表,开始时有序表只包含一个元素arr[0],无序表中包含n-1个元素,每次从无序表中取出第一个元素,把他插入到有序表的适当位置。 2.插入排序时间复杂度O(n^2) 3.插入排序代码实现 package 算法.排序; 
        阅读全文
                
摘要:1.选择排序思想 i = 0;j = i + 1 从arr[0]-arr[n-1]中选取最小值,与arr[0]交换;此时arr[0]有序,继续从arr[1]-arr[n-1]中选取最小值,与arr[1]交换... 一共排序n-1轮 每轮比较位置从 i + 1 到 arr.length-1 2.选择排
        阅读全文
                
摘要:1.冒泡排序的思想 设置双重循环 i = 0; j = 0; 外层循环确定要排序的轮数:arr.length-1轮(倒数第二个元素排序完成时,数组已经有序了) 内层循环从数组的第一个位置开始,依次比较相邻的两个值,一直到到当前的数组的最后一个位置,每经过一次外层循环,下一轮比较的次数就减一,j=ar
        阅读全文
                
摘要:1.排序概述 排序是什么: 内部排序与外部排序 冒泡排序基本思想: 2.冒泡排序实现思路 3.冒泡代码实现 package 数组.冒泡排序; public class BubbleSortMy { public static void main(String[] args) { int[] arr 
        阅读全文
                
摘要:1.排序算法介绍和分类 排序算法介绍:内部排序,外部排序 常见的排序算法分类: 算法的时间复杂度(事前估算的方法): 2.时间频度介绍和特点 时间频度: 时间频度举例说明: 对于时间频度而言,常数项可以忽略: 对于时间频度而言,低次项可以忽略: 对于时间频度而言,系数可以忽略: 3.时间复杂度计算和
        阅读全文
                
                    
                
浙公网安备 33010602011771号