前言: 排序算法是我们编程中遇到的最多的算法。目前主流的算法有8种。 平均时间复杂度从高到低依次是: 冒泡排序(o(n2)),选择排序(o(n2)),插入排序(o(n2)),堆排序(o(nlogn)), 归并排序(o(nlogn)),快速排序(o(nlogn)), 希尔排序(o(n1.25)),基数 ...
分类:
编程语言 时间:
2019-12-26 00:01:35
阅读次数:
88
//大文件排序 function countsLines($path){ $fd = fopen($path,"r"); $total=0; while(!feof($fd)){ $total++; fgets($fd); } return $total; } $filePath = "./file ...
分类:
编程语言 时间:
2019-12-24 10:04:50
阅读次数:
89
$arr=array(19,7,5,1,3,10); $tmp = mergeSort($arr); print_r($tmp); function mergeSort($arr){ $start = 0; $end = count($arr)-1; if($end == 0){ return $a ...
分类:
编程语言 时间:
2019-12-24 09:57:57
阅读次数:
152
概念 Divide and Conquer is an algorithmic paradigm. A typical Divide and Conquer algorithm solves a problem using following three steps.Divide: Break th ...
分类:
编程语言 时间:
2019-12-23 22:28:56
阅读次数:
98
int a[500002]; int b[500002]; void mergesort(int l,int mid,int r){ //使l~mid和mid~r两个有序数列合并为一个有序数列 int i=l,j=mid+1; for(int k=l;k<=r;k++){ if(j>r || i<= ...
分类:
编程语言 时间:
2019-12-23 00:44:00
阅读次数:
80
本文讨论的逆序对基于归并排序。 逆序对可以说是排序的入门问题,因为排序的本质就是消除逆序对,而一个长度为N的序列最大可含有N^2级别的逆序对,一种较为简单的方法是使用分治divide and conquer的思想来求解,类似于归并排序。 首先是将序列对半分成两段,序列的逆序对等于左半边的逆序对+右半 ...
分类:
其他好文 时间:
2019-12-20 23:48:41
阅读次数:
101
归并排序的算法是分治法的一个范例 Like QuickSort, Merge Sort is a Divide and Conquer algorithm.它被分成两半,调用自己来分两半,最后归并两半。 merge() 功能用于合并两半。The merge (arr,l,m,r)是关键的处理arr[ ...
分类:
编程语言 时间:
2019-12-19 23:46:00
阅读次数:
160
归并排序 这个算法有点难感觉 呜呜呜o(╥﹏╥)o "这里有原理" ...
分类:
编程语言 时间:
2019-12-19 23:32:12
阅读次数:
101
归并排序:小和问题 在一个数组中,每一个元素左边比当前元素值小的元素值累加起来,叫做这个数组的小和 例如:[2, 3, 4, 1, 5] 2 左边比 2 小的元素:无 3 左边比 3 小的元素:2 4 左边比 4 小的元素:2,3 1 左边比 1 小的元素:无 5 左边比 5 小的元素:2, 3, ...
分类:
编程语言 时间:
2019-12-18 23:52:33
阅读次数:
90
归并排序:逆序对问题 在一个数组中,左边的数如果比右边的数大,则这两个数构成一个逆序对,请打印所有逆序对 代码 ...
分类:
编程语言 时间:
2019-12-18 23:43:41
阅读次数:
121