精华内容
下载资源
问答
  • 继上一篇map()、forEach()、filter()的总结之后,就想对数组的方法都整理一遍,把零散的...js数组的方法:map()、forEach()、filter()、push()、pop()、shift()、unshift()、concat()、isArray()、toString()、...

    继上一篇map()、forEach()、filter()的总结之后,就想对数组的方法都整理一遍,把零散的知识点整合在一起便是新的收获。map()、forEach()、filter()上一篇已总结,这里不再重复。

    js数组的方法有:map()、forEach()、filter()、push()、pop()、shift()、unshift()、concat()、isArray()、toString()、join()、splice()、every()、some()、reduce()、reverse()、sort()、toLocaleString()、slice()、indexOf()、lastIndexOf()

    ES6: keys()、values()、entries()、of()、from()、copyWithin()、fill()、find()、findIndex()

    ES7: includes()

    push():在数组末尾添加新元素,并返回新数组的长度

    var arr = [1,2,3];
    arr.push(4);
    // 4
    console.log(arr); // [1,2,3,4]
    

    pop():删除数组中的最后一个元素,并返回删除的元素

    var arr = [1,2,3];
    arr.pop();
    // 3
    console.log(arr); // [1,2]
    

    unshift():将一个或多个元素添加到数组的开头,并返回新数组的长度

    var arr = [1,2,3];
    arr.unshift(-1,0);
    // 5
    console.log(arr); // [-1,0,1,2,3,4]
    

    shift():删除数组的第一个元素,返回删除的元素

    var arr = [1,2,3];
    arr.shift();
    // 1
    console.log(arr); // [2,3]
    

    concat():合并两个或多个数组,返回一个新数组,不影响原数组

    var arr = [1,2];
    var arr2 = [3,4];
    var arr3 = [5,6];
    var newArr = arr.concat(arr2, arr3);
    console.log(newArr); // [1,2,3,4,5,6]
    

    isArray():判断一个对象是不是数组,返回的是布尔值

    var arr = [];
    var obj = {};
    Array.isArray(arr); // true
    Array.isArray(obj); // false
    

    toString():将数组转化为字符串,返回转化后的字符串

    var arr = [1, 2, 3];
    arr.toString(); // '1,2,3'
    

    toLocaleString():将数组转化为字符串,返回转化后的字符串

    var arr = [1, 2, 3];
    arr.toString(); // '1,2,3'
    

    注:进一步了解 toSting() 和 toLocaleString()会有不一样的收获。

    join():将数组转化为字符串,返回转化后的字符串

    var arr = [1, 2, 3];
    arr.join('/'); // '1/2/3'
    

    splice():删除或替换现有元素或者原地添加新的元素来修改数组,并以数组形式返回被修改的内容。此方法会改变原数组。array.splice(start, deleteCount, item1, ..., itemi),当start为不同值时会用不同的效果

    var arr = [1, 2, 3, 4, 5, 6];
    arr.splice(6, 0, 7); //  [1, 2, 3, 4, 5, 6, 7]
    arr.splice(7, -1, 8); // [1, 2, 3, 4, 5, 6, 7, 8]
    arr.splice(7, 2, -2); // [1, 2, 3, 4, 5, 6, 7, -2]
    arr.splice(0, 3, -3); // [-3, 4, 5, 6, 7, -2]
    arr.splice(-1, 1, 9); // [-3, 4, 5, 6, 7, 9] 
    arr.splice(7, 2, 10); // [-3, 4, 5, 6, 7, 9, 10]
    arr.splice(-9, 2, -1); // [-1, 5, 6, 7, 9, 10] 
    

    every():测试一个数组内的所有元素是否都能通过某个指定函数的测试,所有元素通过返回true,反之返回false

    var arr = [1, 2, 3];
    arr.every(function(item){
        return item > 2
    }) // false
    arr.every(function(item){
        return item > 0
    }) // true
    

    some():判断数组是否至少有一个元素满足某个指定函数的测试,有的话返回true,无返回false

    var arr = [1, 2, 3];
    arr.some(function(item){
        return item > 2;
    }) // true
    arr.some(function(item){
        return item > 4;
    }) // false
    

    reduce():对数组中的每个元素执行一个由您提供的reducer函数(升序执行),将其结果汇总为单个返回值

    var arr = [1, 2, 3];
    arr.reduce(function(item1, item2) {
        return item1 + item2;
    }) // 6
    arr.reduce(function(item1, item2) {
        return item1 * item2;
    }, 5)// 30
    

    reverse():将数组中元素的位置颠倒,并返回该数组。该方法会改变原数组

    var arr = [1, 2, 3];
    arr.reverse(); // [3, 2, 1]
    

    sort():对数组进行排序,会改变原数组,默认排序顺序是在将元素转换为字符串,然后比较它们的UTF-16代码单元值序列时构建的

    var arr = [2, 1, 4, 12];
    var arr2 = ['a', 'b', 'ae', 'ac'];
    arr.sort(); // [1, 12, 2, 4];
    arr2.sort(); // ['a', 'ac', 'ae', 'b']
    

    slice():从已有数组中浅拷贝,接收两个参数slice(begin, end),包括begin,不包括end,不改变原数组

     var arr = [1, 2, 3, 4];
    arr.slice(1,3); // [2,3]
    arr.slice(-2); // [3,4]
    

    indexOf():返回在数组中可以找到一个给定元素的第一个索引,如果不存在,则返回-1

    var arr = [1,2,3];
    arr.indexOf(3); // 2
    

    lastIndexOf():返回指定元素在数组中的最后一个的索引,如果不存在则返回 -1,第二个参数代表从第几个元素开始往前找

    var arr = [2,3,5,2]
    arr.lastIndexOf(2);//3
    arr.lastIndexOf(2,2);//0 
    

    keys(): 返回一个包含数组中每个索引键的Array Iterator对象

    var arr = [1,2,3,4];
    var iterator = arr.keys();
    for (let key of iterator) {
      console.log(key); // 0 1 2 3
    }
    

    values():返回一个新的 Array Iterator 对象,该对象包含数组每个索引的值

    var arr = [ 'a', 'b', 'c' ];
    var iterator = arr.values();
    for (let key of iterator) {
      console.log(key); // 'a' 'b' 'c'
    }
    

    entries():

    var arr = ['a', 'b', 'c'];
    var iterator = array.entries();
    console.log(iterator.next().value); // [0, "a"]
    console.log(iterator.next().value); // [1, "b"]
    

    of():创建一个具有可变数量参数的新数组实例,而不考虑参数的数量或类型

    Array.of(7);       // [7] 
    Array.of(1, 2, 3); // [1, 2, 3]
    

    from():从一个类似数组或可迭代对象中创建一个新的,浅拷贝的数组实例

    console.log(Array.from('foo')); //  ["f", "o", "o"]
    console.log(Array.from([1, 2, 3], x => x + x)); // [2, 4, 6]
    

    copyWithin():浅复制数组的一部分到同一数组中的另一个位置,并返回它,不会改变原数组的长度,会改变原数组

    var array1 = ['a', 'b', 'c', 'd', 'e'];
    
    // copy to index 0 the element at index 3
    console.log(array1.copyWithin(0, 3, 4)); // ["d", "b", "c", "d", "e"]
    
    // copy to index 1 all elements from index 3 to the end
    console.log(array1.copyWithin(1, 3)); // ["d", "d", "e", "d", "e"]
    
    console.log(array1) // ["d", "d", "e", "d", "e"]
    

    fill():用一个固定值填充一个数组中从起始索引到终止索引内的全部元素。不包括终止索引,arr.fill(value[, start[, end]])

    var arr = [1,2,3,4];
    console.log(arr.fill(5,2)); // [1,2,5,5]
    

    find():返回数组中满足提供的测试函数的第一个元素的值。否则返回undefined

    var arr = [1,3,45,5];
    var test = arr.find(function(item) {
        return item > 4
    }) 
    console.log(test) // 45
    

    findIndex():返回数组中满足提供的测试函数的第一个元素的索引。否则返回-1

    var arr = [1,3,45,5];
    var test = arr.findIndex(function(item) {
        return item > 4
    }) 
    console.log(test) // 2
    

    includes():用来判断一个数组是否包含一个指定的值,根据情况,如果包含则返回 true,否则返回false

    var arr = [1,3,45,5];
    console.log(arr.includes(3)); // true
    
    展开全文
  • 给定两个 int 数组,都...根据已知条件,大小相等,且都已按照升序排序.那么,如果当前查看的数是要找的中位数,则它应该满足,大于所有 2N 个数中的 N - 1 个, 并且小于其余的 N 个.这样的话,在它本身数组中,已经了一部分

      给定两个 int 数组,都是已按照升序排好序的,并且大小相同,都是 N.在 O(log2 N)时间找出它们的中位数.搞得略头疼.但总算还是写出了代码.思想上就是,二分查找.虽然我起初用的是顺序查找.看来我的头脑还停留在线性比较上.
      新的数组,假想的这个两个数组合并了的数组.其个数为偶数个,取下中位数.根据已知条件,大小相等,且都已按照升序排序.那么,如果当前查看的数是要找的中位数,则它应该满足,大于所有 2N 个数中的 N - 1 个, 并且小于其余的 N 个.这样的话,在它本身数组中,已经有了一部分,另外的一部分,应在另一个数组中.如果当前查看的树的索引为 middle, 当前查看的数组为A,另一个为B.那么,A[middle] >= A[x] {x | 0 < x < middle}.A[middle] >= B[x] {x | 0 < x < middle - 1}.这就是前面所说的大于所有 2N 个数种的 N - 1个;接下来,A[middle] <= A[x] {x | middle < x < N}.A[millde] < B[x] {x | <= middle < N}.也即小于其余的 N 个.只有在这两个条件都得到满足的情况下,A[middle]是要找的中位数.这就是我所能给出的全部分析了,接下来的部分,我的话其实很无力.因为个中道理,我都没有搞懂.所以也就不胡言乱语了.不过好像,已经胡言乱语好一阵了...
     呵呵,贴代码了.


    展开全文
  • 插入排序

    2017-06-27 21:19:00
    手中已有的牌是已经排序的,只要对抓的牌key排序。在排序遍历的过程中,当遇到比key小的牌(按照从小到大排序),则结束本次排序。时间复杂度是O(n2),最优时间复杂度O(n),稳定排序。 伪代码:其中,n 是要...

    插入排序(Insertion Sort):玩扑克牌时,每抓一张牌,就就行一次排序。手中已有的牌是已经排序的,只要对新抓的牌key排序。在排序遍历的过程中,当遇到比key小的牌(按照从小到大排序),则结束本次排序。时间复杂度是O(n2),最优时间复杂度O(n),稳定排序。

    伪代码:其中,n 是要排序数组的个数,Arry[]要排序的数组。(按照从小到大排序)

    for  j = 2 to n                              //在代码中,数组元素个数是从 0 开始的,所以,代码里面, j =  1
         key = Arry[j]
         i = j-1
        while  i>0 and Arry[i]>key
                 Arry[i + 1] = Arry[i]
                 i=i-1
         Arry[i+1] = key

     

    C++代码:

    #include<iostream>
    using namespace std;
    template<class T>
    void InsertionSort(T* Arry,int n)
    {
        if (n <= 0)
            return;
        for (int j = 1; j < n; j++)
        {
            T key = Arry[j];
            int i = j - 1;
            while (i>=0 && Arry[i] > key)             //从小到大的顺序排序
            {
                Arry[i+1] = Arry[i];                   //相邻两个做交换,直到排序到的数据小于 key 或者遍历到第一个元素
                i = i - 1;                             
            }
            Arry[i + 1] = key;                         //将key插入到比其小的第一个元素前
        }
        for (int i = 0; i < n; i++)
            cout << Arry[i] << " ";
        cout << endl;
    }

    测试代码:

    int main()
    {
        double arry[] = { 0.2, 0.1, 0.9, 1, 5, 8, 19, 4, 7, 10 };
        InsertionSort<double>(arry,10);
        cout << "BigThink" << endl;
        system("pause");
        return 0;
    }
    View Code

     

    转载于:https://www.cnblogs.com/hello-gogo/p/7087195.html

    展开全文
  • 插入排序 Java实现

    2019-03-31 16:00:08
    直接插入排序(Straight Insertion Sort)是一种最简单的排序方法,其基本操作是将一条记录插入到排好的有序表中,从而得到一个的、记录数量增1的有序表。 这是百度百科关于直接插入排序的定义。 下面是直接...

        直接插入排序(Straight Insertion Sort)是一种最简单的排序方法,其基本操作是将一条记录插入到已排好的有序表中,从而得到一个新的、记录数量增1的有序表。 这是百度百科关于直接插入排序的定义。


        下面是直接插入排序算法的图解:

            1. 先有一个待排序的数组 

             2.i 记录已经排好序的数组的长度,在 i 之前的数组已经按照从小到大的顺序排列。

               在 i 移动的时候。j 的移动范围在数组开始到i所指向的位置。

               通过 j 的移动,将 j 指向的元素不断归位,以实现 i 之前的元素的顺序排列。 

               i 从数组的开始移动到结尾,当 i 等于数组的长度的时候,所有元素就按照从小到大的顺序排列好了。


    实现代码:

    package sort;
    
    public class InsertionSort {
    	public static void main(String[] args) {
    		int [] a = {6,5,2,4,9,7,8,5,1,4};
    		print(a);
    		sort(a);
    		print(a);
    
    	}
    	
    	static void sort(int[] array){
    		for(int i = 1;i<array.length;i++){ 
    			//数组的第一个元素被当作已经排好序的一个数,所以i从1开始。
    			for(int j = i;j>0;j--){
    				if(array[j]<array[j-1]){
    					swap(array,j,j-1);
    				}
    			}
    		}
    	}
    	static void swap(int[] array,int i,int j){
    		int temp = array[i];
    		array[i] = array[j];
    		array[j] = temp;
    		                 
    	}
    	static void print(int[] array){
    		for (int i = 0;i < array.length; i++ ){
    			System.out.print(array[i]+"	");
    		}
    		System.out.println("\n");
    	}
    
    }
    

     


           运行结果:

                                                                             

    展开全文
  • 假设数据{1,4,6,8,3,4,0,2,14},要按照从大到小进行排序 那么我们在第一次循环中,从第一个数据‘1’开始比较,最后挑选出最大‘14’,放到数组的第一个索引处,在第二次循环中,...
  • 为了使读者能够活学活用,本书针对重要的概念精心设计了438个实用范例,囊括大量经验和技巧,即使从事c++工作多年的朋友,也能从中汲取的养料。..  本书适合于从未学习过任何编程语言的新手,以及学习c++多年,...
  • 刷题刷到剑指offer第57题(删除链表(已排序)中重复的结点)时,按照自己的思路做的,发现输出结果时出现过以下问题:做题思路:链表相当于一个前后关系的数组,于是先把此题当做删除数组中重复的元素来思考,立马...
  • javascript入门笔记

    2018-05-15 15:01:07
    特点 :将 a 和 b 转换为 二进制,按位比较,对应位置的数字,至少一位为1的话,那么该为的整体结果就为1,否则为 0 ex : 5 | 3 101 011 ======== 111 结果为 :7 适用场合:任何小数与0 做 按位或的操作...
  • 对乘以2而言,肯定存在某一个丑数T2,排在他之前的每一个丑数乘以2得到的结果都会小于已有的最大丑数,在他之后的每一个丑数乘以2得到的结果都会太大,我们只需记下这个丑数的位置,每次生成的丑数的时候,去更新...
  • 0153. 寻找旋转排序数组中的最小值 0199. 二叉树的右视图 0200. 岛屿数量 0201. 数字范围按位与 0208. 实现 Trie (前缀树) 0209. 长度最小的子数组 0211. 添加与搜索单词 - 数据结构设计 0215. 数组中的第 K...
  •  ArrayList 和Vector都是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,它们都允许直接按序号索引元素,但是插入元素要涉及数组元素移动等内存操作,所以索引数据快而插入数据慢,...
  • 7.2 默认方法允许我们在接口里添加的方法,而不会破坏实现这个接口的已有类的兼容性,也就是说不会强迫实现接口的类实现默认方法。接口可以提供一个默认的方法实现,所有这个接口的实现类都会通过继承得倒这个方法...
  • 深入系列文章部分是先后顺序的,按照目录结构顺序阅读效果最好。 勘误及提问 如果疑问或者发现错误,可以在相应的 issues 进行提问或勘误。 如果喜欢或者有所启发,欢迎 star,对作者也是一种鼓励。 License ...
  • 3.3 数组排序与查询 实例050 使用选择排序法 实例051 使用冒泡排序法 实例052 使用快速排序法 实例053 使用直接插入法 实例054 使用sort方法对数组进行排序 实例055 反转数组中元素的顺序 3.4 常用集合的...
  • 3.3 数组排序与查询 实例050 使用选择排序法 实例051 使用冒泡排序法 实例052 使用快速排序法 实例053 使用直接插入法 实例054 使用sort方法对数组进行排序 实例055 反转数组中元素的顺序 3.4 常用集合的...
  • 3.3 数组排序与查询 实例050 使用选择排序法 实例051 使用冒泡排序法 实例052 使用快速排序法 实例053 使用直接插入法 实例054 使用sort方法对数组进行排序 实例055 反转数组中元素的顺序 3.4 常用集合的...
  • 3.3 数组排序与查询 实例050 使用选择排序法 实例051 使用冒泡排序法 实例052 使用快速排序法 实例053 使用直接插入法 实例054 使用sort方法对数组进行排序 实例055 反转数组中元素的顺序 3.4 常用集合的...
  • 3.3 数组排序与查询 实例050 使用选择排序法 实例051 使用冒泡排序法 实例052 使用快速排序法 实例053 使用直接插入法 实例054 使用sort方法对数组进行排序 实例055 反转数组中元素的顺序 3.4 常用集合的...
  • 第1章 C语言概述 1 1.5 参照本章例题,编写一个C程序,输出以下信息: 1 ...11.8已有a,b两个链表,每个链表中的结点包括学号,成绩。要求把两个链表合并,按学号升序排列。 101 11.9有两个链表a和b,设...
  • 3.3 数组排序与查询 61 实例050 使用选择排序法 61 实例051 使用冒泡排序法 62 实例052 使用快速排序法 64 实例053 使用直接插入法 65 实例054 使用sort方法对数组进行排序 67 实例055 反转数组中元素的顺序 68 3.4 ...
  • 3.3 数组排序与查询 61 实例050 使用选择排序法 61 实例051 使用冒泡排序法 62 实例052 使用快速排序法 64 实例053 使用直接插入法 65 实例054 使用sort方法对数组进行排序 67 实例055 反转数组中元素的顺序 68 3.4 ...
  • 3.3 数组排序与查询 61 实例050 使用选择排序法 61 实例051 使用冒泡排序法 62 实例052 使用快速排序法 64 实例053 使用直接插入法 65 实例054 使用sort方法对数组进行排序 67 实例055 反转数组中元素的顺序 68 3.4 ...
  • 3.3 数组排序与查询 61 实例050 使用选择排序法 61 实例051 使用冒泡排序法 62 实例052 使用快速排序法 64 实例053 使用直接插入法 65 实例054 使用sort方法对数组进行排序 67 实例055 反转数组中元素的顺序 68 3.4 ...
  • 如何按照query的频度排序? 3.4.2 蚂蚁爬杆问题 3.4.3 当在浏览器中输入一个url后回车,后台发生了什么?比如输入url后,你看到了百度的首页,那么这一切是如何发生的呢? 3.4.4 判断两棵树是否相等,请实现两棵...
  • delphi生成随机数

    2012-06-18 10:38:34
    这样生成的随机数肯定是在范围之外的,因为范围是生成随机数的范围啊。这样,每次取随机数时,先随机抽取在某两个范围数组值之间,再在这两个范围数组值之间取随机数。基本上就是这样了。 public class random...
  • 数据结构课程设计

    2014-06-03 13:26:05
    当车位满时,必须车辆离开,等待的车辆才能进入;当车辆离开时计算停留的的时间,并且按照每小时1元收费。 汽车的输入信息格式可以是(进入/离开,车牌号,进入/离开时间),要求可以随时显示停车场内的车辆信息...
  • Excel VBA实用技巧大全 附书源码

    热门讨论 2010-10-08 18:59:24
    01038设置工作簿中的工作表个数 01039设置文件的默认位置 01040设置保存自动恢复文件的时间间隔和保存位置 01041停止屏幕刷新 01042使事件无效 01043使取消键无效 01044不显示警告信息对话框 01045设置使用的...
  • VBA与数据库

    2015-11-19 18:07:38
    1-15 利用已有的数据表创建数据表(Access)(前绑定方法引用Access对象库) 28 2-1 检查数据表是否存在(ADO) 28 •实例2-2 检查数据表是否存在(ADOX) 32 •实例2-3 检查数据表是否存在(DAO) 33 •实例2-4 ...

空空如也

空空如也

1 2 3 4 5 6
收藏数 115
精华内容 46
关键字:

新数组按照已有数组排序