![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
六知青
在山的那边海的那边,有一群蓝精灵...
展开
-
算法复杂度和排序算法比较
算法复杂度时间复杂度:常见的时间复杂度有:常数阶O(1),对数阶O(log2n),线性阶O(n), 线性对数阶O(nlog2n),平方阶O(n2),立方阶O(n3),..., k次方阶O(nk),指数阶O(2n)。随着问题规模n的不断增大,上述时间复杂度不断增大,算法的执行效率越低。空间复杂度:如当一个算法的空间复杂度为一个常量,即不随被处理数据量n的大小而改变时,可表示为O(...原创 2019-01-27 09:15:12 · 733 阅读 · 0 评论 -
插入排序
通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应的位置并插入。public static void InsertSort(int[] arr){ int i, j; int n = arr.Length; int target; //假定第一个元素被放到了正确的位置上 //这样,仅需遍历1 - n-1 for (i = 1...原创 2019-01-27 09:16:36 · 82 阅读 · 0 评论 -
选择排序和冒泡排序
选择排序对于交换次数而言,当最好的时候,交换0次,最差的时候,也就是初始降时,交换次数为 n-1 次,基于最终的时间排序与交换次数总和,因此,总的时间复杂度尽管与冒泡排序相同,但简单选择排序的性能要优于冒泡排序,效率都很低。public static void selectSort(int[] a) { if (a == null || a.length <= 0)...原创 2019-01-27 09:20:08 · 96 阅读 · 0 评论 -
快速排序
算法思想:基于分治的思想,是冒泡排序的改进型。首先在数组中选择一个基准点(该基准点的选取可能影响快速排序的效率,后面讲解选取的方法),然后分别从数组的两端扫描数组,设两个指示标志(lo指向起始位置,hi指向末尾),首先从后半部分开始,如果发现有元素比该基准点的值小,就交换lo和hi位置的值,然后从前半部分开始扫秒,发现有元素大于基准点的值,就交换lo和hi位置的值,如此往复循环,直到lo>=...原创 2019-01-27 09:22:06 · 101 阅读 · 0 评论 -
归并排序
归并排序 (merge sort) 是一类与插入排序、交换排序、选择排序不同的另一种排序方法。归并的含义是将两个或两个以上的有序表合并成一个新的有序表。归并排序有多路归并排序、两路归并排序 , 可用于内排序,也可以用于外排序。这里仅对内排序的两路归并方法进行讨论。分而治之(divide - conquer);每个递归过程涉及三个步骤第一, 分解: 把待排序的 n 个元素的序列分解成两个子序列,...原创 2019-01-27 09:24:28 · 145 阅读 · 0 评论