ES6的JavaScript算法实现之排序和搜索算法

目的:ES6标准下的JS算法的一些实现代码。(作为记录和启发)

内容:排序和搜索算法(未完成,待继续)

一、基础算法

1、排序

1.1、冒泡排序

概念:冒泡排序比较所有相邻的两个项,如果第一个比第二个大,则交换他们。元素项向上移动至正确的顺序,就好像气泡升至表面一样。其复杂度是O(n2)。

 1 const Compare = {
 2   LESS_THAN: -1,
 3   BIGGER_THAN: 1,
 4   EQUALS: 0
 5 };
 6 
 7 function defaultCompare(a, b) {
 8   if (a === b) {
 9     return Compare.EQUALS;
10   }
11   return a < b ? Compare.LESS_THAN : Compare.BIGGER_THAN;
12 }
13 
14 function swap(array, a, b) {
15   /* const temp = array[a];
16   array[a] = array[b];
17   array[b] = temp; */
18   [array[a], array[b]] = [array[b], array[a]];
19 }
20 
21 function bubbleSort(array, compareFn = defaultCompare) {
22   const {length} = array;
23   for (let i = 0; i < length; i++){
24     for (let j = 0; j < length - 1; j++) {
25       if (compareFn(array[j], array[j + 1]) === Compare.BIGGER_THAN) {
26         swap(array, j, j + 1);
27       }
28     }
29   }
30   return array;
31 }
32 
33 function createNonSortedArray(size){
34   var array = [];
35   for (let i = size; i > 0; i--){
36       array.push(i);
37   }
38   return array;
39 }
40 
41 const array = createNonSortedArray(5);
42 console.log(array);
43 console.log(bubbleSort(array))
bubbleSort

1.2、改进的冒泡排序

说明:如果从内循环减去外循环中已跑过的轮数,就可以避免内循环中所有不必要的比较。其复杂度是O(n2)。

 1 const Compare = {
 2   LESS_THAN: -1,
 3   BIGGER_THAN: 1,
 4   EQUALS: 0
 5 };
 6 
 7 function defaultCompare(a, b) {
 8   if (a === b) {
 9     return Compare.EQUALS;
10   }
11   return a < b ? Compare.LESS_THAN : Compare.BIGGER_THAN;
12 }
13 
14 function swap(array, a, b) {
15   /* const temp = array[a];
16   array[a] = array[b];
17   array[b] = temp; */
18   [array[a], array[b]] = [array[b], array[a]];
19 }
20 
21 function modifiedBubbleSort(array, compareFn = defaultCompare) {
22   const {length} = array;
23   for (let i = 0; i < length; i++){
24     for (let j = 0; j < length - 1 - i; j++) {
25       if (compareFn(array[j], array[j + 1]) === Compare.BIGGER_THAN) {
26         swap(array, j, j + 1);
27       }
28     }
29   }
30   return array;
31 }
32 
33 function createNonSortedArray(size){
34   var array = [];
35   for (let i = size; i > 0; i--){
36       array.push(i);
37   }
38   return array;
39 }
40 
41 const array = createNonSortedArray(5);
42 console.log(array);
43 console.log(modifiedBubbleSort(array))
modifiedBubbleSort

2、搜索

二、简单应用

1、

猜你喜欢

转载自www.cnblogs.com/xinkuiwu/p/11799593.html
今日推荐