任意数求和数组去重(键值对)冒泡排序快速排序插入排序

任意数求和:

function sum() {

         var total = null;

         for (var i = 0; i < arguments.length; i++) {

                   var cur = Number(arguments[i]);

                   if (!isNaN(cur)) {

                          total += cur;

                  }

           }

           return total;

}

2.数组去重(键值对)

var ary = [1, 2, 3, 3, 2, 3, 1, 2, 3, 4, 2, 3, 1, 2, 3, 2, 1, 2, 3];

var obj = {};

for (var i = 0; i < ary.length; i++) {

        var cur = ary[i];

       if (obj[cur] == cur) {

            ary[i] = ary[ary.length - 1];

            ary.length--;

            i--;

            continue;

       }

       obj[cur] = cur;

}

console.log(ary);

冒泡排序:

function bubbleSort(ary) {

var flag = false;

for (var i = 0; i < ary.length - 1; i++) {

      for (var j = 0; j < ary.length - 1 - i; j++) {

             if (ary[j] > ary[j + 1]) {

                 ary[j] = ary[j] + ary[j + 1];

                 ary[j + 1] = ary[j] - ary[j + 1];

                 ary[j] = ary[j] - ary[j + 1];

                flag = true;

             }

      }

     if (flag) {

           flag = false;

     } else {

          break;

     }

}

return ary;

}

console.log(bubbleSort([2, 1, 3, 5, 4]));

快速排序:

function quickSort(ary) {

if (ary.length <= 1) {

return ary;

}

var pointIndex = Math.floor(ary.length / 2);

var pointValue = ary.splice(pointIndex, 1)[0];

var left = [];

var right = [];

for (var i = 0; i < ary.length; i++) {

var cur = ary[i];

cur < pointValue ? left.push(cur) : right.push(cur);

}

return quickSort(left).concat([pointValue], quickSort(right));

}

var ary = [12, 13, 23, 14, 20, 26, 34, 13, 16];

var res = quickSort(ary);

console.log(res);

插入排序:

function insertSort(ary) {

var newAry = [];

newAry.push(ary[0]);

for (var i = 1; i < ary.length; i++) {

var cur = ary[i];

for (var j = newAry.length - 1; j >= 0;) {

if (cur < newAry[j]) {

j--;

if (j === -1) {

newAry.unshift(cur);

}

} else {

newAry.splice(j + 1, 0, cur);

j = -1;

}

}

}

return newAry;

}

利用对象的特性进行相数组去重排序。

var ary = [12, 23, 23, 12, 24, 34, 34, 23, 34, 5, 21, 2];

//->如果需求是既要去重也要排序,我们只需要利用对象的特点即可实现

var obj = {};

for (var i = 0; i < ary.length; i++) {

var cur = ary[i];

obj[cur] = cur;

}

var newAry = [];

for (var key in obj) {

newAry[newAry.length] = obj[key];

}

console.log(newAry);

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 回溯算法 回溯法:也称为试探法,它并不考虑问题规模的大小,而是从问题的最明显的最小规模开始逐步求解出可能的答案,并...
    fredal阅读 14,677评论 0 89
  • 数组方法的小总结 从数组末尾删除一项,有哪些方法?ary.length--ary.length-=1; ary.l...
    固执_i阅读 1,436评论 0 0
  • 单例模式 适用场景:可能会在场景中使用到对象,但只有一个实例,加载时并不主动创建,需要时才创建 最常见的单例模式,...
    Obeing阅读 6,360评论 1 10
  • 数组的常用方法 增加,删除和替换:都是影响原始数组push()pop()unshift()shift()splic...
    Dream_丹丹阅读 3,468评论 0 3
  • 这本书讲述的是在兔子坡居住的兔子和其他的小动物们听说有新的一家人要来了,他们的心情既兴奋又不安,因为这意味着新的生...
    水婉汝阅读 3,101评论 0 0