- 浏览: 436785 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (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 1030c - linkedlist store ordere ... -
c - word counter (binary-tree)
2012-05-09 14:17 1676c - word counter (binary-tree) ... -
random select
2011-08-28 01:00 1176random select problem: ... -
sparse data structure - matrix
2011-08-18 20:03 1034sparse data structure sp ... -
max sub_sequence - c
2011-08-10 01:02 1041max sub_sequence - c /* ... -
binary search - c
2011-08-06 12:07 1049binary search - c (simple) ... -
bit_array - simple use
2011-05-28 23:47 973bit array,use less memory to de ... -
linkedlist - java 简单实现
2011-02-11 21:29 1560linked list 链表, - ... -
queue (用 java 简单实现)
2011-02-03 01:45 4010queue ------ 结构 线性存 ... -
Medians and Order Statistics (次序统计)
2011-01-03 14:36 2779Medians and Order Statistics - ... -
counting sort
2011-01-02 20:36 1529counting sort ------ counting ... -
quick sort
2011-01-01 20:26 1154quicksort ------ quicksort ove ... -
priority queue
2010-12-22 00:11 2227priority queue priority queue ... -
heap sort
2010-12-18 19:09 1171heapsort ------ heap 数据结构 hea ... -
insertion sort
2010-10-28 00:21 1013insertion sort ------ insertio ... -
z 字型 读取 矩阵
2010-10-23 16:50 2144以 z 字型 读取 矩阵, ... -
排序算法:求 长度为 n的 数组中,最大的 m个数
2010-08-31 10:16 2587排序:数组 length=m,从其中中取出最大的 n 数字,n ... -
已排序数组 a,求其元素的绝对值 共有多少个不同的值
2010-08-29 20:41 1559已排序数组 a,求其元素的绝对值 共有多少个不同的值? ... -
binary search
2010-08-29 19:35 921binary search in sorted array: ... -
An Introduction to Algorithm 2nd 's contents
2010-08-11 23:02 1146算法导论(2nd) 结构 * <Introductio ...
相关推荐
Merge Sort算法c++的实现。用的是VS2008
归并排序(Merge sort)(台灣譯作:合併排序)是建立在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。
c++ 分治法合并排序 merge sort c语言 分治法合并排序 merge sort(将cout修改printf 加头文件include "stdio.h")
merge sort 排序 C++ merge sort 算法的C++实现
Merge Sort 算法的C语言实现 linux 下编译;windows下没试过,也许需要改头文件
通过merge-sort算法的实现,掌握外存算法所基于的I/O模型与内存算法基于的RAM模型的区别;理解不同的磁盘访问优化方法是如何提高数据访问性能的。
C#,单向链表(Simply Linked List)的归并排序(Merge Sort)算法与源代码 归并排序法(3Merge Sort,以下简称MS)是分治法思想运用的一个典范。 其主要算法操作可以分为以下步骤: Step 1:将n个元素分成两个含n/...
斯坦福公开课算法1 merge sort 第一节
C#,双向链表(Doubly Linked List)归并排序(Merge Sort)算法与源代码 1 双向链表 双向链表也叫双链表,是链表的一种,它的每个数据结点中都有两个指针,分别指向直接后继和直接前驱。所以,从双向链表中的任意一...
排序——归并排序(Merge sort)
基于python的排序算法-归并排序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的值(输入...