首页 > 其他分享 >Array类 冒泡排序 稀疏数组

Array类 冒泡排序 稀疏数组

时间:2024-02-07 21:44:23浏览次数:29  
标签:Arrays 稀疏 冒泡排序 数组 Array 排序 方法

Arrays类

  • 数组的工具类java.util.Arrays
  • 由于数组对象本身并没有方法可以供我们调用,但API中提供了一个工具类Arrays供我们使用,从而可以对数据对象进行一些基本的操作;
  • 查看JDK帮助文档
  • Arrays类中的方法都是static修饰的静态方法,在使用的时候可以直接使用类名进行调用,而“不用”使用对象来调用(注意:是"不用"而不是"不能")
  • 具有以下常用功能:
    • 给数组赋值:通过fil方法。
    • 对数组排序:通过sort方法,按升序。
    • 比较数组:通过equals方法比较数组中元素值是否相等。
    • 查找数组元素:通过binarySearh方法能对排序好的数组进行二分查找法操作。

冒泡排序

  • 冒泡排序无疑是最为出名的排序算法之一。总共有八大排序!!!!

冒泡排序

  • 冒泡的代码还是相当简单的,两层循环,外层冒泡轮数,内层依次比较,江湖中人人尽皆知。
  • 我们看到嵌套循环,应该立马想到就可以得出这个算法的时间复杂度为O(n2)。
  • 思考:如何优化?

稀疏数组

  • 需求:编写五子棋游戏中,有存盘退出和续上盘的功!能

需求

  • 分析问题:因为该二维数组的很多值是默认值0,因此记录了很多没有意义的数据。
  • 解决:稀疏数组

稀疏数组的介绍

  • 当一个数组中大部分元素为0,或者为同一个值的数组时,可以使用稀疏数组来保存该数组。
  • 稀疏数组的处理方式是:
    • 记录数组一共有几行几列,有多少个不同值
    • 把具有不同值的元素和行列及值记录在一个小规模的数组中,从而缩小程序的规模
  • 如下图,左边是原始数组,右边是稀疏数组

稀疏数组

标签:Arrays,稀疏,冒泡排序,数组,Array,排序,方法
From: https://www.cnblogs.com/jianghongyi/p/18011336

相关文章

  • 153. Find Minimum in Rotated Sorted Array
    题目Supposeanarraysortedinascendingorderisrotatedatsomepivotunknowntoyoubeforehand.(i.e., [0,1,2,4,5,6,7] mightbecome [4,5,6,7,0,1,2]).Findtheminelement.Youmayassumenoduplicateexistsinthearray.Example1:Input:[3,4,5,1,2]O......
  • 子数组最大累加和
    子数组最大累加和53.最大子数组和返回子数组最大累加和返回子数组的开始和结束位置intmax(inta,intb,intc){intd=a>b?a:b;returnd>c?d:c;}//必须经过mid和mid+1intmaxCrossingSum(int*nums,intleft,intmid,intright){......
  • 数组的使用
    #include<stdio.h>//数组的使用intmain(){ inti=0; //定义一个整形数组,最多存放10个元素 intarr[10]={1,2,3,4,5,6,7,8,9,10}; for(i=0;i<10;i++) { printf("%d",arr[i]); } printf("\n"); return0;}......
  • 数组
    数组的定义数组是相同类型数据的有序集合;数组描述的是相同类型的若干个数据,按照一定的先后次序排列组合而成。其中,每一个数据称为一个数组元素,每个的数组元素可以通过下标访问它们。数组声明创建首先必须声明数组变量,才能够在程序中使用数组。下面是声明数组变量的语法:......
  • 牛牛的等差数列(树状数组,区间加等差数列、区间求和)
    https://ac.nowcoder.com/acm/contest/5157/C区间加等差数列,区间求和树状数组,二阶差分\(b_i=a_i-a_{i-1}\)\(c_i=b_i-b_{i-1}\)\[\sum_{i=1}^na_i=\sum_{i=1}^n\sum_{j=1}^ib_j=\sum_{i=1}^n\sum_{j=1}^i\sum_{k=1}^jc_k\\=\sum_{k=1}^nc_k\sum_{i,j}[k\......
  • #排列组合#CF1550D Excellent Arrays
    洛谷传送门CF1550D分析对于excellent的\(a\)来说\(|a_i-i|=x\)的值是固定的,考虑枚举它一半正一半负时函数值是最大的,当\(n\)为奇数时要分为两种情况(不过可以通过杨辉三角合并)问题是,由于\(l,r\)的范围,并不能做到所有位置都能可正可负,不过不超过\(mn=\min\{1-l,r-n\}......
  • 并发容器【ConcurentHashMap、CopyOnWriteArrayList、阻塞队列、ArrayBlockingQueue】
    (并发容器)转自极客时间什么是并发容器?在JUC包中,有一大部分是关于并发容器的,如ConcurrentHashMap,ConcurrentSkipListMap,CopyOnWriteArrayList及阻塞队列。这里将介绍使用频率、面试中出现频繁的最高的ConcurrentHashMap和阻塞队列。注意:这里说到的容器概念,相当于我们理解中......
  • C++编程练习||1.排序函数模板2.函数模板3.重载printArray函数模板
    1.排序函数模板已知主函数如程序后缀代码所示,请为其编写适当的模板函数,使主函数的bubbleSort函数可以对一个整型数组和一个浮点数数组进行输入、排序、输出操作。#include<iostream>#include<iomanip>usingnamespacestd;template<typenameT>voidbubbleSort(T*arr,......
  • [数据结构] 数组与特殊矩阵
    写在前面偷懒,先写了数组,列表要画图,所以今天就先不写了数组的定义数组是由n个相同类型的数据元素构成的有限序列。每个数据元素被称为一个数组元素,每个元素在n个线性关系中的序号称为该元素的下标,下标的取值范围称为数组的维界。数组与线性表的关系:数组是线性表的推广。一维数......
  • JavaScript 实现类似SQL 左联接式的对象数组合并
    在JavaScript中,你可以使用对象合并(Objectmerging)来模拟数据库的左联接操作。左联接操作会将两个对象的特定属性进行合并,类似于SQL中的LEFTJOIN操作。假设你有两个对象,每个对象代表一个表:consttable1=[{id:1,age:30},{id:3,age:25},];consttable2......