归并排序属于稳定排序,时间复杂度为O(nlogn) 思路:采用分治策略,将问题分成一些小的问题然后递归求解,治的部分是将分的部分得到的答案和在一起,即为分而治之 过程:这里用图来显示比较直观 import java.util.Arrays; public class MergeSort { publ ...
分类:
编程语言 时间:
2019-12-31 10:38:40
阅读次数:
63
MapReduce 两个部分: 映射:产生键值对 归并:处理这些键值对 // kernel __kernel void string_search(char16 pattern, __global char* text, int chars_per_item, __local int* local_ ...
分类:
其他好文 时间:
2019-12-30 14:20:06
阅读次数:
64
串 一、串的基本概念 串(也称作字符串)是由n(n≥0)个字符组成的有限序列。 一个串中任意个连续的字符组成的子序列称为该串的子串。 包含子串的串称为该子串的主串。 一个字符在一个串中的位置序号(为大于等于0的正整数)称为该字符在串中的位置。当且仅当这两个串的值完全相等时,称这两个串相等。 二、串数 ...
分类:
其他好文 时间:
2019-12-30 12:58:46
阅读次数:
87
归并排序(merge-sort)是以分治的思想,把排序的数组化分为左右两部分,比较两数组中索引所指向的元素大小, 将小的放入新的数组中,并将该索引向下移动一个位置。 实现是采用递归调用方式,把要排序的数组拆分成左右两部分直到分成单个元素(分),再分别对左右两部分元素进行排序合并(合) 再把有序的这两 ...
分类:
编程语言 时间:
2019-12-29 20:24:57
阅读次数:
66
一.前提知识(分治思想) 将原问题分解为几个规模较小但类似与原问题的子问题,递归的求解这些子问题,然后再合并这些子问题的解来建立原问题的解。 分治模式在每层递归时都有三个步骤: 1.分解原问题为若干子问题,这些子问题是原问题的规模较小的实例。 2.解决这些子问题,递归地求解各子问题。当子问题的规模足 ...
分类:
编程语言 时间:
2019-12-29 11:11:06
阅读次数:
65
快排和归并分治总结 快排和归并排序都运用了分治的思想,所以在我看来这两种排序方法都有自己的相似性。 快排 在快排中,首先运用的是分割的方式,选取pivot,将比pivot小的元素放在pivot前面。将比pivot大的元素放在pivot后面。 {} quickSort(arr[],low,high) ...
分类:
其他好文 时间:
2019-12-27 23:59:53
阅读次数:
165
前言: 排序算法是我们编程中遇到的最多的算法。目前主流的算法有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