博客
关于我
[数据结构与算法-01]稀疏数组和队列
阅读量:88 次
发布时间:2019-02-25

本文共 5300 字,大约阅读时间需要 17 分钟。

?????????

????

1.1 ????

???????????????????????????????????????????????????????12x12???????????????????????0?????????????????

1.2 ?????????

?????????????????????????????????????????????????????????????????????????????

  • ??????????????????????????
  • ?????????????????????????????????????
  • 1.3 ?????????

  • ?????????????????????????????
  • ??????????????????????????????????
  • 1.4 ?????????

    package cn.klb.datastructures.sparsearray;public class SparseArray {    /**      * ???????????     * @param chessArray ?????     * @return ????     */    public static int[][] chessToSparse(int[][] chessArray) {        int valueNums = 0;        for (int[] ints : chessArray) {            for (int i : ints) {                if (i != 0) {                    valueNums++;                }            }        }        int row = chessArray.length;        int col = chessArray[0].length;        int[][] sparseArray = new int[valueNums + 1][3];        sparseArray[0][0] = row;        sparseArray[0][1] = col;        sparseArray[0][2] = valueNums;        int index = 1;        for (int i = 1; i < row; i++) {            for (int j = 1; j < col; j++) {                if (chessArray[i][j] != 0) {                    sparseArray[index][0] = i;                    sparseArray[index][1] = j;                    sparseArray[index][2] = chessArray[i][j];                    index++;                }            }        }        return sparseArray;    }    /**      * ??????????????     * @param sparseArray ????     * @return ??????     */    public static int[][] sparseToChess(int[][] sparseArray) {        int row = sparseArray[0][0];        int col = sparseArray[0][1];        int[][] cheeseArray = new int[row][col];        for (int i = 1; i < sparseArray.length; i++) {            cheeseArray[sparseArray[i][0]][sparseArray[i][1]] = sparseArray[i][2];        }        return cheeseArray;    }    /**      * ????     * @param array ??     */    public static void showArray(int[][] array) {        for (int[] ints : array) {            for (int i : ints) {                System.out.print(i + " ");            }            System.out.println();        }    }}### 1.5 ????```javapackage cn.klb.test.datastructurestest;import cn.klb.datastructures.sparsearray.SparseArray;import org.junit.Test;public class SparseArrayTest {    @Test    public void testSparseArray() {        int[][] chessArr1 = new int[12][12];        chessArr1[1][2] = 1;        chessArr1[2][3] = 2;        System.out.println("-----????1--------");        SparseArray.showArray(chessArr1);        System.out.println("-----????-------");        int[][] sparseArr = SparseArray.chessToSparse(chessArr1);        SparseArray.showArray(sparseArr);        System.out.println("-----????2--------");        int[][] chessArr2 = SparseArray.sparseToChess(sparseArr);        SparseArray.showArray(chessArr2);    }}

    ??

    2.1 ????

    ????????????????????????????????????????????????????

    2.2 ???????

    ????????????????????????????????????????????????

    • ??????Enqueue?
    • ??????Dequeue?
    • ??????????

    2.3 ???????????

  • ????????????????
  • ??????front?rear?????????????
  • ??????rear???????????
  • ??????front???????????
  • ???????????????????????
  • 2.4 ???????

    package cn.klb.datastructures.queue;public class ArrayQueue {    private int maxSize; // ??????    private int front;  // ??????    private int rear;   // ??????    private int[] arr; // ????????    public ArrayQueue(int arrMaxSize) {        maxSize = arrMaxSize;        arr = new int[maxSize];    }    /**      * ???????     * @return ???     */    public boolean isFull() {        return (rear + 1) % maxSize == front;    }    /**      * ????????     * @return ????     */    public boolean isEmpty() {        return rear == front;    }    /**      * ???????     * @param n ??????     */    public void add(int n) {        if (isFull()) {            System.out.println("???????????~");            return;        }        arr[rear] = n;        rear = (rear + 1) % maxSize;    }    /**      * ??????     * @return ?????     */    public int getQueue() {        if (isEmpty()) {            throw new RuntimeException("??????????");        }        int value = arr[front];        front = (front + 1) % maxSize;        return value;    }    /**      * ????????     * */    public void showQueue() {        if (isEmpty()) {            System.out.println("????? ????~~");            return;        }        for (int i = front; i < front + size(); i++) {            System.out.print(arr[i % maxSize] + " ");        }        System.out.println();    }    /**      * ?????????????     * @return ????     */    public int size() {        return (rear + maxSize - front) % maxSize;    }}

    2.5 ??????

    package cn.klb.test.datastructurestest;import cn.klb.datastructures.queue.ArrayQueue;import org.junit.Test;public class ArrayQueueTest {    @Test    public void arrayQueueTest() {        ArrayQueue arrayQueue = new ArrayQueue(5);        System.out.println("-----???0 1 2-----");        arrayQueue.add(0);        arrayQueue.add(1);        arrayQueue.add(2);        arrayQueue.showQueue();        System.out.println("-----????-----");        System.out.println("?????" + arrayQueue.getQueue());        arrayQueue.showQueue();        System.out.println("-----???7 8-----");        arrayQueue.add(7);        arrayQueue.add(8);        arrayQueue.showQueue();    }}

    转载地址:http://zbv.baihongyu.com/

    你可能感兴趣的文章
    Nokia5233手机和我装的几个symbian V5手机软件
    查看>>
    none 和 host 网络的适用场景 - 每天5分钟玩转 Docker 容器技术(31)
    查看>>
    None还可以是函数定义可选参数的一个默认值,设置成默认值时实参在调用该函数时可以不输入与None绑定的元素...
    查看>>
    NOPI读取Excel
    查看>>
    NoSQL&MongoDB
    查看>>
    NoSQL介绍
    查看>>
    Notepad ++ 安装与配置教程(非常详细)从零基础入门到精通,看完这一篇就够了
    查看>>
    Notepad++在线和离线安装JSON格式化插件
    查看>>
    notepad++最详情汇总
    查看>>
    notepad如何自动对齐_notepad++怎么自动排版
    查看>>
    Notification 使用详解(很全
    查看>>
    NotImplementedError: Cannot copy out of meta tensor; no data! Please use torch.nn.Module.to_empty()
    查看>>
    Now trying to drop the old temporary tablespace, the session hangs.
    查看>>
    nowcoder—Beauty of Trees
    查看>>
    np.arange()和np.linspace()绘制logistic回归图像时得到不同的结果?
    查看>>
    NPM 2FA双重认证的设置方法
    查看>>
    npm error Missing script: “server“npm errornpm error Did you mean this?npm error npm run serve
    查看>>
    npm error MSB3428: 未能加载 Visual C++ 组件“VCBuild.exe”。要解决此问题,1) 安装
    查看>>
    npm install digital envelope routines::unsupported解决方法
    查看>>
    npm install 卡着不动的解决方法
    查看>>