首页 > 其他分享 >09数组

09数组

时间:2023-10-15 10:12:23浏览次数:30  
标签:int array2 09 System 数组 println array out

数组

定义方式

int[] nums;
静态初始化
int[] nums1 = {1,2,3,8,5,2};
动态初始化
int[] nums2 = new int[5];	//表示5个长度的int数组
foreach

​ 这种方式简单更适合用来打印输出,但是如果要操作某一个数的话是不好用的

for (int i:nums1) {         // foreach nums1.for 这种方式简单更适合用来打印输出,但是如果要操作某一个数的话是不好用的
    System.out.println(i);
}

多维数组

int[][] arrys = {{1,2},{3,4},{5,6},{7,8}};
for (int[] arry : arrys) {	//arrays.for
    for (int i : arry) {	//array.for
        System.out.print(i+"\t");
    }
    System.out.println();
}

稀疏数组

int[][] array = new int[11][11];
array[1][2] = 1;
array[2][3] = 2;
//打印稀疏数组
for (int[] ints : array) {
    for (int anInt : ints) {
        System.out.print(anInt+"\t");
    }
    System.out.println();
}
01
用一个数组保存稀疏数组
//首先要获取有效值的个数
int sum = 0;
for (int i = 0; i < array.length; i++) {
    for (int j = 0; j < array[i].length; j++) {
        if (array[i][j] != 0){
            sum++;
        }
    }
}
System.out.println("有效值的个数:" + sum);   //总共存放sum个有效值的
int[][] array2 = new int[sum+1][3];   // sum+1 是因为第一行用来存放上面稀疏数组共有11行11列sum个有效值  3是存放 行、列、值
array2[0][0] = array.length;	// array共11行
array2[0][1] = array[0].length; // array共11列
array2[0][2] = sum;				// array共sum个有效值
然后给array2存放有效值
int num = 0;
for (int i = 0; i < array.length; i++) {
    for (int j = 0; j < array[i].length; j++) {
        if (array[i][j] != 0){
            num++;
            array2[num][0] = i; //行
            array2[num][1] = j; //列
            array2[num][2] = array[i][j]; //值
        }
    }
}

输出验证是否正确

for (int i=0;i<array2.length;i++){
    System.out.println("第"+i+"个值");
    System.out.println("行:"+array2[i][0]);
    System.out.println("列:"+array2[i][1]);
    System.out.println("值:"+array2[i][2]);
}
02
根据保存的数组将整个稀疏数组还原
int[][] array3 = new int[array2[0][0]][array2[0][1]];
//在array2里第一个存放的是原稀疏数组共  多少行array2[0][0]]   多少列[array2[0][1]  
//以及几个有效值array2[0][0]][array2[0][2]
//还原稀疏数组
for (int i = 1; i < array2.length; i++) {
    array3[array2[i][0]][array2[i][1]] = array2[i][2];
}
//打印还原的稀疏数组 检查是否正确
for (int[] ints : array3) {
    for (int anInt : ints) {
        System.out.print(anInt+"\t");
    }
    System.out.println();
}
03

Arrays类

int[] a = {1,2,65,2,4,5,89};
System.out.println(a);
System.out.println(Arrays.toString(a));
04
Arrays.fill(a,0,3,7);//给0-3之间的数替换成7  包含0但是不不包含3
System.out.println(Arrays.toString(a));
Arrays.fill(a,5); //全部替换成5
System.out.println(Arrays.toString(a));
05
int[] b = {1,2,65,2,4,5,89};
System.out.println(Arrays.toString(b));
System.out.println(Arrays.toString(sort(b)));	//数组修改的是指针这里虽然是调用的方法但是已经对数组b排序完成
System.out.println(Arrays.toString(b));			//所以这里数组b在输出也已经是排序好的状态
//Arrays.sort(b);	  这是Arrays类提供的排序方法
//System.out.println(Arrays.toString(b));
06
//冒泡排序
public static int[] sort(int[] b){
    int t = 0;
    Boolean flag = false;
    for (int i = 0; i < b.length; i++) {
        for (int j = 0; j < b.length-1-i; j++) {
            if (b[j]>b[j+1]){
                t = b[j];
                b[j] = b[j+1];
                b[j+1] = t;
                flag = true;
            }
        }
        if (flag==false){
            break;
        }
    }
    return b;
}

标签:int,array2,09,System,数组,println,array,out
From: https://www.cnblogs.com/LiuWTaoRecord/p/17765297.html

相关文章

  • [LeetCode] 1354. Construct Target Array With Multiple Sums 多次求和构造目标数组
    Youaregivenanarray target ofnintegers.Fromastartingarray arr consistingof n 1's,youmayperformthefollowingprocedure:let x bethesumofallelementscurrentlyinyourarray.chooseindex i,suchthat 0<=i<n andsettheva......
  • #yyds干货盘点# LeetCode程序员面试金典:最小操作次数使数组元素相等
    1.简述:给你一个长度为 n 的整数数组,每次操作将会使 n-1 个元素增加 1 。返回让数组所有元素相等的最小操作次数。 示例1:输入:nums=[1,2,3]输出:3解释:只需要3次操作(注意每次操作会增加两个元素的值):[1,2,3]=>[2,3,3]=>[3,4,3]=>[4,4,4]示例2:输入:nums=[1......
  • 学习C语言心得-自定义函数-对整形有序数组进行二分查找-二分法
    对整形有序数组进行二分查找#include<stdio.h>intfind(intarr[],intsz,intk){ intleft=0;intright=sz-1; while(left<=right) { intmid=left+right/2; if(k>arr[mid]) { left=mid+1; } if(k<arr[mid]) { right=mid......
  • P2595 [ZJOI2009] 多米诺骨牌
    轮廓线DP+外部容斥。似乎是CDQ论文题。有一个\(n\timesm\)的矩形表格,其中有一些位置有障碍。现在要在这个表格内放一些\(1\times2\)或者\(2\times1\)的多米诺骨牌,使得任何两个多米诺骨牌没有重叠部分,任何一个骨牌不能放到障碍上。并且满足任何相邻两行之间都有至少......
  • 2023-10-09-周一
    今天....好像....啥也没干....哈哈折腾了几天得到pwn调试环境,发现调试起来还是没有IDA爽同时vscode的调试速度也太慢了所以放弃了折腾,,或者说已经折腾过了分析其中一个elf_loader项目发现有点小垃圾,,,是一个假的loader..和我的分析目的不相同,,,虽然也当拓宽眼界了,,哈哈......
  • [AGC009B] Tournament 题解
    思路考虑树形\(\text{dp}\)。我们将每个人与把自己淘汰的人连边。得到一颗以一为根的树。由于我们需要求出必须赢的场数最多的那位选手,至少要赢多少场。考虑最多的限制。可以使用树型动态规划。每一次两个人比赛的代价为:\[dp_i=\max(dp_i,dp_j)+1\]这样就达成了最多的限......
  • 树状数组
    数据结构,支持区间查询,单点修改或区间修改,单点查询。单点修改操作:voidmodify(intx,intval){ while(x<N){ c[x]+=val; x+=lowbit(x); }}查询前缀和:intquery(intx){ intres=0; while(x){ res+=c[x]; x-=lowbit(x); } returnres;}要做到区间修改、单......
  • 在JavaScript中如何检查数组是否包含某个值?
    内容来自DOChttps://q.houxu6.top/?s=在JavaScript中如何检查数组是否包含某个值?在JavaScript中,最简洁、高效的方法来检查数组是否包含某个值是什么?这是我所知的唯一方法:functioncontains(a,obj){for(vari=0;i<a.length;i++){if(a[i]===obj)......
  • 20231009-20231015
    20231009考试。20231010[AGC057E]RowCol/ColRowSort给定一个\(n\timesm\),值域\([0,9]\)的矩阵\(B\),请你计数有多少个大小相同的矩阵\(A\)满足下列条件:分别对\(A\)的每一列中元素从小到大排序,再分别对\(A\)的每一行中元素从小到大排序能够得到\(B\)。分别......
  • 16、oracle的游标open动态接收数组
    oracle的游标open动态接收数组使用实例:DECLARETYPECUR_MODEL_TYPEISREFCURSOR;C1CUR_MODEL_TYPE;V_TASK_CODEVARCHAR2(1000);V_DRAW_TYPEVARCHAR2(1000);BEGINFORCURIN(SELECTT.BIZ_CODE,T.BIZ_TYPE_IDFRO......