- 浏览: 443211 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (158)
- J2SE (15)
- c/c++ (17)
- linux & ubuntu (20)
- js (18)
- algorithm (21)
- android (1)
- software (3)
- svn (1)
- db (6)
- other (19)
- css (5)
- go (1)
- html 5 (3)
- computer science (1)
- php (3)
- 创业 (8)
- EJB & jboss (1)
- TDD (1)
- jsp & servlet (2)
- http, tcp & ip (2)
- hibernate (1)
- json (1)
- 乐 (2)
- ps (2)
- netbeans (1)
- extjs (2)
- eclipse (4)
- 项目管理 (1)
- varnish (2)
- study abroad (1)
- python (1)
- erlang (1)
- math (1)
- shell (1)
- assembly (4)
- lucene (1)
- web (1)
- http (1)
- tcp & ip (1)
最新评论
-
yiguxianyun:
...
css li 不换行 -
stdayong:
...
netbeans 中使用 maven -
程序猿_星:
为啥会中文乱码啊
servlet 以 gzip 格式返回数据 -
huanhuan519:
感谢分享~
gdb 调试工具 -
heyl1234:
写过些js,对css还不熟。谢谢~
css li 不换行
merge sort
合并排序
------
merge sort 原理
采用 divide-and-conqure,即 分而治之,
将问题分成最小的单元,然后从最小的解决,再不断合并,合并中继续解决,直到完成,
------
例子:
* js 代码
* html 代码
------
合并排序
------
merge sort 原理
采用 divide-and-conqure,即 分而治之,
将问题分成最小的单元,然后从最小的解决,再不断合并,合并中继续解决,直到完成,
------
例子:
* js 代码
var arr_merge= [ 78, 13, 6, 177, 26, 90, 288, 45, 62 ]; /** * merge sort (合并排序),时间: o(n*lg(n)),内存: n, * * @param inputArr * @return */ function mergeSort(inputArr) { /** * 将1组数组 合并1次,数量大概减半 * * @param arrs * @return */ function mergeArrOnce(arrs) { var len = Math.ceil(arrs.length / 2); var arrNew = new Array(len); for ( var i = 0; i < arrNew.length; i++) { if (i * 2 == arrs.length - 1) { // 最后1次 仅有1个数组 arrNew[i] = mergeTwoArr(arrs[i * 2]); } else { arrNew[i] = mergeTwoArr(arrs[i * 2], arrs[i * 2 + 1]); } } return arrNew; } /** * 按元素大小,合并2个数组 */ function mergeTwoArr(arrOne, arrTwo) { if (typeof(arrOne)=='number' && typeof(arrTwo)=='number') { // 排序2个数字,生成1个数组 if (arrOne < arrTwo) { return new Array(arrOne, arrTwo); } else { return new Array(arrTwo, arrOne); } } else if (typeof(arrOne)=='number' && arrTwo == undefined) { // 仅1个数字 return [arrOne]; } else if (arrTwo == undefined) { // 如果仅有1个数组,则直接返回 return arrOne; } else {// 2个都是数组 var len = arrOne.length + arrTwo.length; var arrNew = new Array(len); var indexOne = 0, indexTwo = 0; for ( var i = 0; i < len; i++) { if (arrOne[indexOne] < arrTwo[indexTwo]) { arrNew[i] = arrOne[indexOne++]; } else { arrNew[i] = arrTwo[indexTwo++]; } if (indexOne==arrOne.length) { // arrOne 结束了,(最近一次添加的是 arrOne) return arrNew.slice(0,i+1).concat(arrTwo.slice(indexTwo,arrTwo.length)); } else if (indexTwo==arrTwo.length) { // arrTwo 结束了,(最近一次添加的是 arrTwo) return arrNew.slice(0,i+1).concat(arrOne.slice(indexOne,arrOne.length)); } } return arrNew; } } while(inputArr.length>1) { inputArr = mergeArrOnce(inputArr); } return inputArr; }
* html 代码
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <script type="text/javascript" src="js/merge_sort.js"></script> </head> <body> <input type="button" value="merge sort" onclick="alert(mergeSort(arr_merge));" /> </body> </html>
------
发表评论
-
c - linkedlist
2012-05-10 14:52 1081c - linkedlist store ordere ... -
c - word counter (binary-tree)
2012-05-09 14:17 1726c - word counter (binary-tree) ... -
random select
2011-08-28 01:00 1205random select problem: ... -
sparse data structure - matrix
2011-08-18 20:03 1083sparse data structure sp ... -
max sub_sequence - c
2011-08-10 01:02 1074max sub_sequence - c /* ... -
binary search - c
2011-08-06 12:07 1092binary search - c (simple) ... -
bit_array - simple use
2011-05-28 23:47 1007bit array,use less memory to de ... -
linkedlist - java 简单实现
2011-02-11 21:29 1593linked list 链表, - ... -
queue (用 java 简单实现)
2011-02-03 01:45 4048queue ------ 结构 线性存 ... -
Medians and Order Statistics (次序统计)
2011-01-03 14:36 2828Medians and Order Statistics - ... -
counting sort
2011-01-02 20:36 1564counting sort ------ counting ... -
quick sort
2011-01-01 20:26 1191quicksort ------ quicksort ove ... -
priority queue
2010-12-22 00:11 2271priority queue priority queue ... -
heap sort
2010-12-18 19:09 1206heapsort ------ heap 数据结构 hea ... -
insertion sort
2010-10-28 00:21 1044insertion sort ------ insertio ... -
z 字型 读取 矩阵
2010-10-23 16:50 2191以 z 字型 读取 矩阵, ... -
排序算法:求 长度为 n的 数组中,最大的 m个数
2010-08-31 10:16 2632排序:数组 length=m,从其中中取出最大的 n 数字,n ... -
已排序数组 a,求其元素的绝对值 共有多少个不同的值
2010-08-29 20:41 1604已排序数组 a,求其元素的绝对值 共有多少个不同的值? ... -
binary search
2010-08-29 19:35 974binary search in sorted array: ... -
An Introduction to Algorithm 2nd 's contents
2010-08-11 23:02 1187算法导论(2nd) 结构 * <Introductio ...
相关推荐
**合并排序(Merge Sort)**是一种高效的、基于分治策略的排序算法,它的核心思想是将大问题分解为小问题来解决。在这个案例中,我们关注的是使用C++语言在Visual Studio 2008环境下实现Merge Sort算法。 **1. 分治...
标题中的"two-phase-merge_sort-.rar_2phase merge sort_merge_sort_two merge"指的是一个采用两阶段归并排序算法的程序或文档集合。这个算法是针对大数据量、无法一次性加载到内存中的情况设计的,常见于外部排序...
归并排序(Merge Sort)是一种基于分治策略的高效排序算法,由计算机科学家John W. Backus于1945年提出。它的工作原理可以分为三个主要步骤:分解、解决和合并。 1. 分解:将原始数据序列分成两个相等(或接近相等...
**Merge Sort 算法详解及C语言实现** Merge Sort是一种高效的、稳定的排序算法,它的基本思想源于分治策略。这种策略将一个大问题分解为若干个小问题来解决,最终合并小问题的结果得到原问题的解。Merge Sort的步骤...
c++ 分治法合并排序 merge sort c语言 分治法合并排序 merge sort(将cout修改printf 加头文件include "stdio.h")
merge sort 排序 C++ merge sort 算法的C++实现
归并排序(Merge Sort)是一种高效的、稳定的排序算法,它采用了分治法(Divide and Conquer)的设计理念。在Python中实现归并排序,我们可以将一个大问题分解为两个或多个相同或相似的小问题,然后分别解决这些小...
C#,单向链表(Simply Linked List)的归并排序(Merge Sort)算法与源代码 归并排序法(3Merge Sort,以下简称MS)是分治法思想运用的一个典范。 其主要算法操作可以分为以下步骤: Step 1:将n个元素分成两个含n/...
在本文中,我们将深入探讨如何使用CUDA编程技术实现归并排序(Merge Sort)以及如何使用CMake构建CUDA项目。CUDA是一种由NVIDIA公司推出的并行计算平台和编程模型,它允许程序员利用GPU的强大计算能力来加速计算密集...
C#,双向链表(Doubly Linked List)归并排序(Merge Sort)算法与源代码 1 双向链表 双向链表也叫双链表,是链表的一种,它的每个数据结点中都有两个指针,分别指向直接后继和直接前驱。所以,从双向链表中的任意一...
归并排序(Merge Sort)是一种基于分治策略的高效排序算法,它的主要思想是将大问题分解成小问题,然后逐个解决小问题,最后再将解决好的小问题合并成解决大问题的答案。这种算法在计算机科学中有着广泛的应用,尤其...
归并排序(Merge Sort)源码及运行示例
算法分析与设计教学课件:Chapter 4 Merge Sort and Recursion.pptx
sql学习 Merge Sort Join优化第4式(保证PGA尺寸).sql
sql学习 Merge Sort Join优化第2式(连接条件索引消除排序).sql
sql学习 Merge Sort Join优化第1式(两表限制条件有索引).sql
sql学习 Merge Sort Join优化第3式(避免取多余列致排序尺寸过大).sql
void merge(int A[],int p,int q,int r);//合并排序算法 /************合并排序算法的实现******************/ int main() { int p,q,r; printf("合并排序算法的实现:\n"); printf("请输入p、q、r的值(输入...