|
69 | 69 | * [09-01](https://github.com/TYRMars/JSlearn#09-01) `函数应用`
|
70 | 70 |
|
71 | 71 | #### add JavaScrpit-JS插件
|
72 |
| -* JSDemo |
| 72 | +* JSDemo |
73 | 73 | * JDMenu 京东无延迟菜单
|
74 | 74 | * DatePicker组件开发
|
75 | 75 | * 手风琴效果开发
|
@@ -1440,7 +1440,7 @@ xhr.onreadystatechange = function () {
|
1440 | 1440 | * 假如你的网站要跨域访问网站的一个接口
|
1441 | 1441 | * 给你一个地址http://coding.kejiganhuo.com/api.js
|
1442 | 1442 | * 返回内容格式如callback({x:100,y:200})(可动态生成)
|
1443 |
| - |
| 1443 | + |
1444 | 1444 | ```html
|
1445 | 1445 | <script>
|
1446 | 1446 | window.callback = function (data) {
|
@@ -1902,6 +1902,61 @@ function setGap(arr) {
|
1902 | 1902 | <p align="center"><img src="http://www.2cto.com/uploadfile/Collfiles/20160918/20160918092144591.gif" /></p>
|
1903 | 1903 |
|
1904 | 1904 | * 归并排序
|
| 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 | +``` |
1905 | 1960 |
|
1906 | 1961 | ## 09-01
|
1907 | 1962 | ### JS基本应用-函数
|
@@ -2018,7 +2073,7 @@ function setGap(arr) {
|
2018 | 2073 | if (i==0) {
|
2019 | 2074 | return 1;
|
2020 | 2075 | }
|
2021 |
| - return i*arguments.callee(i-1); |
| 2076 | + return i * arguments.callee(i-1); |
2022 | 2077 | })(5)
|
2023 | 2078 | );
|
2024 | 2079 | ```
|
|
0 commit comments