算法
小鱼瞎溜达
这个作者很懒,什么都没留下…
展开
-
算法[1]---排序---冒泡排序
冒泡排序思想:设数组的长度为N(4,3,1,5,2)1. 比较前后相邻的二个数据(4和3),如果前面数据大于后面的数据(4>3),就将这二个数据交换(3,4,1,5,2)。2. 这样对数组的第0个数据到N-1个数据进行一次遍历后,最大的一个数据就“沉”到数组第N-1个位置。3. N=N-1,如果N不为0就重复前面二步,否则排序完成。小结:平均时间复杂度O(n^2);最好情况O(n);最...原创 2018-03-17 12:26:38 · 127 阅读 · 0 评论 -
算法[1]---排序---选择排序
选择排序思想:设数组的长度为N(4,3,1,5,2)1.从n个元素的数据序列中选出关键字最小/大的元素并放在最前/后位置2.下一次从n-1个元素中选出最小/大的元素并放在最前/后位置3.以此类推,经过n-1次完成排序。小结:平均时间复杂度O(n^2);最好情况O(n^2);最坏情况O(n^2);空间复杂度O(1);占用内存,不占用额外内存;稳定性:不稳定 //通常解法 public static ...原创 2018-03-17 15:47:32 · 93 阅读 · 0 评论 -
算法[1]---排序---插入排序
插入排序思想:设数组的长度为N(4,3,1,5,2)1.从第一个数开始往后看,遇到比前一个数的情况就可以向前插入2.查看刚刚插入的数是否比现阶段前面的数小,如小则继续向前插入3.例如:4前面无数,不动;3<4,3插入4前面,3前面无数,不动;1<4,1差在4的前面,1继续和3比较,1<3,1插在3的前面,1前无数,不动...小结:平均时间复杂度O(n^2);最好情况O(n);最坏...原创 2018-03-17 16:40:01 · 126 阅读 · 0 评论 -
算法[1]---排序---归并排序
归并排序思想:1.把长度为n的输入序列分成两个长度为n/2的子序列;2.对这两个子序列分别采用归并排序;3.将两个排序好的子序列合并成一个最终的排序序列。小结:平均时间复杂度O(nlogn);最好情况O(nlogn);最坏情况O(nlogn);空间复杂度O(n);占用额外内存;稳定性:稳定//归并排序入口 public static void mergerSort(int[] arra) { ...原创 2018-03-25 12:14:25 · 160 阅读 · 0 评论 -
算法[1]---排序---快速排序
快速排序思想:设数组为(1 0 4 6 0 7 9 3 4)其中最后一个4为划分值1.如果当前数(index)<划分值,小于区下一个数和当前数交换,小于区向右扩一个位置,index向后下一个数;2.如果当前数(index)=划分值,index++;3.如果当前数(index)>划分值,当前数和大于区的前一个数交换,大于区向左扩一个位置,index不动;小结:平均时间复杂度O(nlogn...原创 2018-03-24 23:58:09 · 160 阅读 · 0 评论