一些简单的算法思想

76 阅读1分钟

冒泡排序

1.相邻两个数,两两比较,如果前面的数大于后面的数,交换位置

2.第一轮比较完,最大的数到最后面重复上述操作,第二轮找到第二大的数...

       function sort() {
            for (var i = 0; i < arr.length - 1; i++) { 
            // n - 1次冒泡比较
                for (var j = 0; j < arr.length - 1 - i; j++) {  
                //内层循环,进行 n - 1 - i 循环 
                    if (arr[j] > arr[j + 1]) {  
                    //相邻两个数两两比较,如果前一个数大于后一个数,交换位置
                        var temp = arr[j];
                        arr[j] = arr[j + 1];
                        arr[j + 1] = temp;
                    }
                }
            }
        }
        

选择排序

1.n个数,进行n - 1 次选择 

2.每次选择未排序的数中找最小数的下标,与前面的数交换位

          function xuanze() {
                for (var i = 0; i < arr.length - 1; i++) {
                var minPos = i;     //假设每次循环的最小数下标是第一个
                for (var a = i + 1; a < arr.length; a++) {
                    if (arr[minPos] > arr[a])
                        minPos = a;
                    // arr[0] = arr[minPos]
                }
                var temp = arr[i];
                arr[i] = arr[minPos];
                arr[minPos] = temp;
                }
           }
           

数组去重

1.用indexOf  includes实现数组去重

     function test1() {
            var newArr = []
            for (var i = 0; i < arr.length - 1; i++) {
                //判断新数组中是否有原数组当前元素,如果没有,存储到新数组中
                if (newArr.indexOf(arr[i]) == -1) {
                    newArr.push(arr[i])
                }
                // if(!newArr.includes(arr[i])){
                //     newArr.push(arr[i])
                // }
            }
            console.log(newArr);
        }
        test1()

2.利用双重for循环+splice实现

          function test2() {
                for(var i = 0; i < arr.length; i++){
                    var item = arr[i]  //外层循环元素
                    for(var j = i + 1; j < arr.length; j++){
                        if(item == arr[j]){
                            arr.splice(j,1)
                            j--
                        }
                    }
                }
                console.log(arr);
            }
            test2()