Skip to content

Commit 48bbf58

Browse files
committed
归并排序
1 parent 3aab9e8 commit 48bbf58

File tree

1 file changed

+58
-3
lines changed

1 file changed

+58
-3
lines changed

README.md

Lines changed: 58 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@
6969
* [09-01](https://github.com/TYRMars/JSlearn#09-01) `函数应用`
7070

7171
#### add JavaScrpit-JS插件
72-
* JSDemo
72+
* JSDemo
7373
* JDMenu 京东无延迟菜单
7474
* DatePicker组件开发
7575
* 手风琴效果开发
@@ -1440,7 +1440,7 @@ xhr.onreadystatechange = function () {
14401440
* 假如你的网站要跨域访问网站的一个接口
14411441
* 给你一个地址http://coding.kejiganhuo.com/api.js
14421442
* 返回内容格式如callback({x:100,y:200})(可动态生成)
1443-
1443+
14441444
```html
14451445
<script>
14461446
window.callback = function (data) {
@@ -1902,6 +1902,61 @@ function setGap(arr) {
19021902
<p align="center"><img src="http://www.2cto.com/uploadfile/Collfiles/20160918/20160918092144591.gif" /></p>
19031903

19041904
* 归并排序
1905+
* 归并排序是建立在归并操作上的一种有效的排序算法。该算法是分治法的一个非常典型的应用。归并排是一种稳定的排序方法。将已有序列的子序列合并
1906+
* <1>.把长度为n的输入序列分成两个长度为n/2的子序列;
1907+
* <2>.对这两个子序列分别采用归并排序;
1908+
* <3>.将两个排序好的子序列合并成一个最终的排序序列。
1909+
1910+
```JavaScript
1911+
function mergeSort(arr) {  //采用自上而下的递归方法
1912+
    var len = arr.length;
1913+
    if(len < 2) {
1914+
        return arr;
1915+
    }
1916+
    var middle = Math.floor(len / 2),
1917+
        left = arr.slice(0, middle),
1918+
        right = arr.slice(middle);
1919+
    return merge(mergeSort(left), mergeSort(right));
1920+
}
1921+
 
1922+
function merge(left, right)
1923+
{
1924+
    var result = [];
1925+
    console.time('归并排序耗时');
1926+
    while (left.length && right.length) {
1927+
        if (left[0] <= right[0]) {
1928+
            result.push(left.shift());
1929+
        } else {
1930+
            result.push(right.shift());
1931+
        }
1932+
    }
1933+
 
1934+
    while (left.length)
1935+
        result.push(left.shift());
1936+
 
1937+
    while (right.length)
1938+
        result.push(right.shift());
1939+
    console.timeEnd('归并排序耗时');
1940+
    return result;
1941+
}
1942+
var arr=[3,44,38,5,47,15,36,26,27,2,46,4,19,50,48];
1943+
console.log(mergeSort(arr));
1944+
// 归并排序耗时: 0.009033203125ms
1945+
// 归并排序耗时: 0.0048828125ms
1946+
// 归并排序耗时: 0.004150390625ms
1947+
// 归并排序耗时: 0.002197265625ms
1948+
// 归并排序耗时: 0.0048828125ms
1949+
// 归并排序耗时: 0.0029296875ms
1950+
// 归并排序耗时: 0.0009765625ms
1951+
// 归并排序耗时: 0.000732421875ms
1952+
// 归并排序耗时: 0.003173828125ms
1953+
// 归并排序耗时: 0.003173828125ms
1954+
// 归并排序耗时: 0.001220703125ms
1955+
// 归并排序耗时: 0.002197265625ms
1956+
// 归并排序耗时: 0.0029296875ms
1957+
// 归并排序耗时: 0.002685546875ms
1958+
//[2, 3, 4, 5, 15, 19, 26, 27, 36, 38, 44, 46, 47, 48, 50]
1959+
```
19051960

19061961
## 09-01
19071962
### JS基本应用-函数
@@ -2018,7 +2073,7 @@ function setGap(arr) {
20182073
     if (i==0) {
20192074
       return 1;
20202075
     }
2021-
     return i*arguments.callee(i-1);
2076+
     return i * arguments.callee(i-1);
20222077
   })(5)
20232078
 );
20242079
```

0 commit comments

Comments
 (0)