快速排序 优点: 好写 局部性好 空间复杂度平均为O(logn) 缺点: 不稳定 朴素地选择第一个元素或者最后一个元素容易退化 选择中间的元素不容易退化,但是对特定的序列仍然有可能退化 优势在于局部性原理,相邻几次调整的区间都几乎涉及同一片内存,所以比归并排序以及堆排序更优。 挺好记的。为什么要写 ...
分类:
编程语言 时间:
2020-04-01 09:16:10
阅读次数:
70
算法思想:首先把一个数组中的元素,按照某一方法,先拆分了之后,按照一定的顺序各自排列,然后再归并到一起,使得归并后依然是有一定顺序的 。 算法可自顶向下拆分数组也可以自底向上拆分数组合并 自底向上的归并排序有对索引依赖少的优势,对于链表来说比较适合 //自底向上的归并排序 template<type ...
分类:
编程语言 时间:
2020-03-29 13:07:53
阅读次数:
146
1.插入排序 先用一个temp保存当前待插入的元素,然后用一个while循环移动p,循环条件中要判断p =0,如果待插入的元素小于有序区的所有元素,p会移动的负数,让它0时再循环一次,出来的时候即可插入到对应的位置。 2.选择排序 3.堆排序 如果写实际下标那么就用i2+1[l]=》h=mid 1; ...
分类:
编程语言 时间:
2020-03-28 16:18:47
阅读次数:
70
Problem : There are two sorted arrays nums1 and nums2 of size m and n respectively. Find the median of the two sorted arrays. The overall run time com ...
分类:
其他好文 时间:
2020-03-27 18:31:14
阅读次数:
78
归并排序(Merge Sort) 和选择排序一样,归并排序的性能不受输入数据的影响,但表现比选择排序好的多,因为始终都是O(n log n)的时间复杂度。代价是需要额外的内存空间。 归并排序是建立在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide and Conquer)的一个非常典 ...
分类:
编程语言 时间:
2020-03-26 16:28:37
阅读次数:
93
线性回归在百度百科的解释:线性回归是利用数理统计中回归分析,来确定两种或两种以上变量间相互依赖的定量关系的一种统计分析方法,运用十分广泛。其表达形式为y = w'x+e,e为误差服从均值为0的正态分布。 设备监测值随着时间序列变化的趋势,按照上面的解释,我们要找到Y和X,才能得到回归的方程。很清楚, ...
分类:
其他好文 时间:
2020-03-25 16:23:36
阅读次数:
103
题目描述 在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数P。并将P对1000000007取模的结果输出。 即输出P%1000000007 输入描述 : 示例1 输入 输出 这道题目就是一个归并排序的思路,归并排序就是采用分而 ...
分类:
编程语言 时间:
2020-03-24 23:06:10
阅读次数:
72
问题: 对n个不同的数构成的数组A[1..n]进行排序,其中n=2^k. 解析: 根据分治的思想,对于每一个待排序的数组,拆分成左右两端,分别对左右两段进行排序,对于已经有序的两个数组把他们合并起来。 设计(核心代码): 1 void merge(int low,int mid,int high) ...
分类:
编程语言 时间:
2020-03-23 22:07:06
阅读次数:
94
https://www.cnblogs.com/kkun/archive/2011/11/23/2260271.html#include<iostream> #include <stdio.h> #include <stack> using namespace std; void merge(int ...
分类:
编程语言 时间:
2020-03-23 13:47:36
阅读次数:
65
JS排序算法之快排和归并 [Toc] 快速排序 原理: 选择一个key(一般是第一个元素), 将数组划分为两个区域. 左边全部区域小于等于key, 右边全部大于key. 然后在通过这种方法将每个区域划分为两个区域. 整个过程可以递归实现,以此实现整个数据有序 + 时间复杂度: O(n log(n)) ...
分类:
编程语言 时间:
2020-03-21 21:40:59
阅读次数:
72