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

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

作者: 风两般的男人 | 来源:发表于2017-02-07 09:50 被阅读36次

任意数求和:

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);

相关文章

  • js常用方法

    任意数求和 9*9乘法表 数组去重 sort思想 双循环思想 快速排序 插入排序 冒泡排序 判断是否为公有属性方法...

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

    任意数求和: function sum() { var total = null; for (va...

  • 数组排序

    数组排序 sort排序 冒泡排序 快速排序 插入排序

  • 排序算法

    冒泡排序 选择排序 插入排序 归并排序 快速排序 数组内置方法

  • 学习算法第三天 —— 排序

    题目:对数组进行排序冒泡排序插入排序快速排序归并排序 题目 对一个数组进行排序,所有的方法: 冒泡排序 时间复杂度...

  • 算法总结

    一,排序算法:冒泡排序,选择排序,快速排序,归并排序,插入排序,堆排序,希尔排序冒泡排序:会重复的比较数组中相邻的...

  • 算法

    冒泡算法排序 快速排序 插入排序 正则表达式,千分位分隔符 斐波那契数列 数组去重的方式

  • JavaScript 排序算法

    目录 冒泡排序 插入排序 选择排序 快速排序 归并排序 堆排序 桶排序 冒泡排序 思路 1相邻数值比较2找出数组最...

  • Datawhale | 编程第6期 Test 3

    排序 1.实现归并排序、快速排序、插入排序、冒泡排序、选择排序、堆排序(选做) 归并排序 快速排序 插入排序 冒泡...

  • 排序算法总结

    冒泡排序 选择排序 运行时间与输入无关数据移动最少 插入排序 归并排序 快速排序 case:数组中出现超过一半的数...

网友评论

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

      本文链接:https://www.haomeiwen.com/subject/jrjeittx.html