摘要: 归并排序思路1) 归并从两个有序表R[low...mid]和R[mid+1...high],每次从左边依次取出一个数进行比较,将较小者放入tmp数组中,最后将两段中剩下的部分直接复制到tmp中。这样tmp是一个有序表,再将它复制加R中。(其中要考虑最后一个子表的长度不足length的情况)2) 排序自底向上的归并,第一回:length=1;第二回:length=2*length ...代码实现Function.prototype.method = function(name, func){ this.prototype[name] = func; return this;};Arr... 阅读全文
posted @ 2013-10-09 23:11 JChen___ 阅读(264) 评论(0) 推荐(0) 编辑
摘要: 堆排序思路堆排序是一种树形选择排序方法(注意下标是从1开始的,也就是R[1...n])。1) 初始堆:将原始数组调整成大根堆的方法——筛选算法:比较R[2i]、R[2i+1]和R[i],将最大者放在R[i]的位置上(递归调用此方法到结束)2) 堆排序:每次将堆顶元素与数组最后面的且没有被置换的元素互换堆排序实现Function.prototype.method = function(name, func){ this.prototype[name] = func; return this;};Array.method('createHeap', function(low, hi 阅读全文
posted @ 2013-10-09 14:30 JChen___ 阅读(347) 评论(0) 推荐(0) 编辑
摘要: 选择排序思路在无序区中选出最小的元素,然后将它和有序区的第一个元素交换位置。选择排序实现Function.prototype.method = function(name, func){ this.prototype[name] = func; return this;};Array.method('selectSort', function(){ var len = this.length, i, j, k, tmp; for(i=0; i<len; i++){ k = i; for(j=i+1; j<len; j++){ ... 阅读全文
posted @ 2013-10-09 13:43 JChen___ 阅读(133) 评论(0) 推荐(0) 编辑
摘要: 快速排序思路1) 假设第一个元素为基准元素2) 把所有比基准元素小的记录放置在前一部分,把所有比基准元素大的记录放置在后一部分,并把基准元素放在这两部分的中间(i=j的位置)快速排序实现Function.prototype.method = function(name, func){ this.prototype[name] = func; return this;};Array.method('quickSort', function(s, t){ var i=s, j=t, tmp; if(s i && this[j]>tmp) j--; ... 阅读全文
posted @ 2013-10-09 13:37 JChen___ 阅读(153) 评论(0) 推荐(0) 编辑
摘要: 改进冒泡思路如果在某次的排序中没有出现交换的情况,那么说明在无序的元素现在已经是有序了,就可以直接返回了。改进冒泡实现Function.prototype.method = function(name, func){ this.prototype[name] = func; return this;};Array.method('rBubbleSort', function(){ var len = this.length, i, j, tmp, exchange; for(i=0; ii; j--){ if(this[j] < th... 阅读全文
posted @ 2013-10-09 13:21 JChen___ 阅读(149) 评论(0) 推荐(0) 编辑
摘要: 冒泡排序思想通过在无序区的相邻元素的比较和替换,使较小的元素浮到最上面。冒泡排序实现Function.prototype.method = function(name, func){ this.prototype[name] = func; return this;};Array.method('bubbleSort', function(){ var len = this.lenght, i, j, tmp; for(i=0; ii; j--){ if(this[j] > this[j-1]){ tmp... 阅读全文
posted @ 2013-10-09 13:10 JChen___ 阅读(129) 评论(0) 推荐(0) 编辑
摘要: 希尔排序思路我们在第 i 次时取gap = n/(2的i次方),然后将数组分为gap组(从下标0开始,每相邻的gap个元素为一组),接下来我们对每一组进行直接插入排序。希尔排序实现Function.prototype.method = function(name, func){ this.prototype[name] = func; return this;};Array.method('shellSort', function(){ var len = this.length, gap = parseInt(len/2), i, j, tmp; wh... 阅读全文
posted @ 2013-10-09 00:12 JChen___ 阅读(143) 评论(0) 推荐(0) 编辑