찾다
Javajava지도 시간Java에서 원본 배열을 희소 배열로 변환하는 방법

1.이란?

예를 들어 11 * 11 주사위 놀이 보드가 있고 이를 시뮬레이션하기 위해 프로그램을 사용하려면 2차원 배열이어야 합니다. 그런 다음 1을 사용하여 검은 돌을 나타내고 2를 사용하여 흰 돌을 나타냅니다. 체스판에 검은 돌과 흰 돌이 하나만 있으면 이 2차원 배열에는 1과 2가 하나만 있고 나머지는 있습니다. 다음과 같이 체스 말을 나타내지 않는 의미 없는 0입니다.

0 0 0 0 0 0 0 0 0 0 0 
0 0 0 0 1 0 0 0 0 0 0
0 0 0 2 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
……

배열의 요소 대부분이 0이거나 동일한 값을 갖는 경우 희소 배열을 사용하여 배열을 저장할 수 있습니다. 왜 이런 일을 하는가? 공간을 절약할 수 있기 때문이죠.

2. 사용 방법은?

  • 원래 배열에 몇 개의 행, 열 및 몇 개의 다른 값이 있는지 기록하세요.

  • 소규모 배열에서 다른 값을 가진 요소의 행, 열 및 값을 기록하세요. .이 소규모 배열을 희소 배열이라고 합니다

3. 사례:

기존 6*7 원래 배열은 다음과 같습니다.

0   0   0   22   0   0   15
0   11  0   0    0   17   0
0   0   0  -6    0   0    0
0   0   0   0    0   39   0
91  0   0   0    0   0    0
0   0   28  0    0   0    0

먼저 희소 배열의 첫 번째 행과 열은 다음과 같습니다. 첫 번째 행과 두 번째 열에는 요소 배열의 행 수를 기록합니다. 원래 배열의 열 수를 기록합니다. 첫 번째 행과 세 번째 열은 원래 배열에 포함된 서로 다른 값의 수(0 제외)를 기록합니다. 따라서 희소 배열의 한 행은 다음과 같아야 합니다.

行    列    值
6     7     8

희소 배열의 두 번째 행부터 시작하여 각 행은 원래 배열에 있는 0이 아닌 값의 행, 열 및 값 크기를 기록합니다. 예를 들어 두 번째 줄이 원래 배열의 행, 열 및 값 22를 기록하는 것이라면 희소 배열의 두 번째 줄은 다음과 같습니다.

行    列    值
0     3     22

그런 다음 이 방법을 사용하여 15, 11, 17, -6, 39, 91, 28 정보이므로 원래 배열에서 최종적으로 변환된 희소 배열은 다음과 같습니다.

行    列    值
6     7     8
0     3     22
0     6     15
1     1     11
1     5     17
2     3     -6
3     5     39
4     0     91
5     2     28

이것은 6 * 7 배열을 9 * 3 배열로 변환하여 압축 효과를 얻습니다.

4. 원본 배열과 희소 배열 간의 변환 아이디어:

원래 배열을 희소 배열로 변환:

  • 2차원 배열을 탐색하여 유효 배열 수를 구합니다. 개수를 기반으로 희소 배열 생성

    ;
  • int[count + 1][3]유효한 배열을 희소 배열에 저장

  • 희소 배열을 원래 배열로 저장:

희소 배열의 첫 번째 행을 읽으면 배열의 첫 번째 행을 기반으로 방법을 알 수 있습니다. 원본 배열에 있는 많은 행과 열. 그런 다음 원본 배열을 만듭니다.

  • 희소 배열 뒤에 여러 행의 배열을 읽고 이를 원본 배열에 할당합니다.

public class SparseArray {
    public static void main(String[] args){
        // 创建一个 11 * 11的原始数组
        int[][] arr1 = new int[11][11];
        arr1[1][2] = 1;
        arr1[2][3] = 2;

        // 原始数组转稀疏数组
        // 1. 遍历,得到非0数据的个数以及所在的行列
        int count = 0;
        Map<string> map = new HashMap();
        for (int i = 0; i <li> 위의 코드는 원래의 배열과 희소성을 구현합니다. 배열의 상호 변환과 희소 배열의 유연한 사용은 실행 메모리를 절약하고 프로그램 성능을 향상시킬 수 있습니다. <p></p>
</li></string>

위 내용은 Java에서 원본 배열을 희소 배열로 변환하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명
이 기사는 亿速云에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

뜨거운 도구

Dreamweaver Mac版

Dreamweaver Mac版

시각적 웹 개발 도구

PhpStorm 맥 버전

PhpStorm 맥 버전

최신(2018.2.1) 전문 PHP 통합 개발 도구

맨티스BT

맨티스BT

Mantis는 제품 결함 추적을 돕기 위해 설계된 배포하기 쉬운 웹 기반 결함 추적 도구입니다. PHP, MySQL 및 웹 서버가 필요합니다. 데모 및 호스팅 서비스를 확인해 보세요.

Eclipse용 SAP NetWeaver 서버 어댑터

Eclipse용 SAP NetWeaver 서버 어댑터

Eclipse를 SAP NetWeaver 애플리케이션 서버와 통합합니다.

WebStorm Mac 버전

WebStorm Mac 버전

유용한 JavaScript 개발 도구