`
sunlong
  • 浏览: 85539 次
  • 性别: Icon_minigender_1
  • 来自: 无锡
社区版块
存档分类
最新评论

无序数组的实现

    博客分类:
  • Java
 
阅读更多

纯粹是复习数据结构

/**
 * 无序数组的实现
 * User: sunlong
 * Date: 13-10-22
 * Time: 下午2:38
 */
public class MyArray {
    private int[] data;
    private int index = -1;

    public MyArray(int size){
        if(size < 1){
            throw new RuntimeException("size must be larger than 1");
        }
        data = new int[size];
    }

    /**
     * 插入的时间是一常数
     * 时间复杂度 O(1)
     * @param value
     */
    public void insert(int value) {
        if(index == data.length){
            throw new RuntimeException("array is full");
        }
        data[++index] = value;
    }

    /**
     * 删除需要先找到对象平均是N/2,同时需要移动空间也是N/2,整体上时间复杂度O(n)
     * @param value
     */
    public void delete(int value){
        int i=0;
        for (; i<=index; i++) {
            if(data[i] == value){
                break;
            }
        }
        for(int j=i; j<=index-1; j++){
            data[j] = data[j+1];
        }
        index--;
    }

    /**
     * 返回索引
     * 线性查找 时间复杂度O(n)
     * @param value
     * @return
     */
    public int find(int value){
        for (int i=0; i<=index; i++) {
            if(data[i] == value){
                return i;
            }
        }
        return -1;
    }

    public void print(){
        System.out.println("-------------------");
        for (int i=0; i<=index; i++) {
            System.out.println(data[i]);
        }
        System.out.println("-------------------");
    }

}

class MyArrayTest{
    public static void main(String[] args){
        MyArray array = new MyArray(10);

        array.insert(5);
        array.insert(4);
        array.insert(6);
        array.insert(3);
        array.insert(1);
        array.insert(2);
        array.insert(8);
        array.insert(10);
        array.insert(9);
        array.insert(7);

        array.print();

        System.out.println(array.find(5));
        System.out.println(array.find(8));
        System.out.println(array.find(11));

        array.delete(8);
        array.insert(11);
        array.print();
    }
}

 

分享到:
评论

相关推荐

    分别对无序数组和有序数组建立二叉树,实现遍历和查找

    本篇文章将探讨如何从无序数组和有序数组构建二叉树,并实现遍历与查找功能。 #### 1. 构建二叉树 ##### 1.1 从无序数组构建二叉搜索树(BST) 在给定的代码片段中,可以看到一个名为 `insertT2` 的函数用于将...

    无序数组排序

    无序数组排序是指对一个没有特定顺序的元素集合进行重新排列,使其按照某种规则(如升序或降序)呈现有序状态。这个过程涉及到多种排序算法,每种都有其独特之处,适用于不同的场景和性能需求。 在“将文本框的字符...

    python 实现在无序数组中找到中位数方法

    【Python 实现在无序数组中找到中位数的方法】 在Python编程中,寻找无序数组的中位数是一项常见的任务,特别是在数据分析和算法设计中。中位数是将一组数值按大小顺序排列后位于中间位置的数,对于偶数个数值,中...

    Java查找不重复无序数组中是否存在两个数字的和为某个值

    Java查找不重复无序数组中是否存在两个数字的和为某个值 本文主要讲述了如何在Java中查找不重复无序数组中是否存在两个数字的和为某个值的问题。该问题可以使用哈希表来解决,时间复杂度为O(N)。 首先,需要将数组...

    C++算法之在无序数组中选择第k小个数的实现方法

    C++算法之在无序数组中选择第k小个数的实现方法 本文主要介绍了C++算法之在无序数组中选择第k小个数的实现方法,涉及C++数组的遍历、判断、运算等相关操作技巧。下面是对该算法的详细说明: 一、算法概述 该算法...

    查找数组中第k大的数

    给定一数组,查找数组中第k大的数。代码中借助快速排序中的partition方法来实现。

    【源代码】C++算法(五)一维数组去重(复杂度为n且不新开辟空间)

    以下是实现这个算法的C++代码示例: ```cpp #include void removeDuplicates(int arr[], int n) { if (n ) return; // 基线条件:数组为空或只有一个元素 int j = 0; // 用于保持未重复元素的最后一个位置 ...

    文件读出数组进行选择排序和二分查找(java)

    5. **Test1.java**:这可能是一个实现上述功能的Java源代码文件,包含读取文件、处理数组、选择排序以及二分查找的逻辑。通过查看这个文件的源代码,可以学习到如何在实际项目中应用这些概念。 6. **使用前请看一下...

    堆排序实例(Java数组实现)

    在Java中,我们可以用数组来实现堆排序,下面将详细讲解如何用Java数组实现堆排序。 首先,我们需要创建一个`MaxHeap`类来表示大顶堆。这个类包含以下几个关键方法: 1. `size()`:返回堆中元素的数量。 2. `...

    数据结构与算法 全 数据结构与算法全 Java

    - **无序数组实现**:使用无序数组实现优先级队列。 - **有序数组实现**:使用有序数组实现优先级队列。 - **堆实现**:使用堆结构实现优先级队列。 **2.8 阻塞队列** - **单锁实现**:使用单一锁机制实现阻塞队列...

    mycode_冒泡排序_emu8086冒泡_

    在8086微处理器上实现冒泡排序,我们需要理解8086汇编语言的基础知识,包括指令系统、寄存器的使用以及内存操作。 首先,8086处理器有8个通用寄存器(AX, BX, CX, DX, SI, DI, SP, BP),它们可以用来存储数据或者...

    最短无序连续子数组1

    题目 "最短无序连续子数组1" 是一道关于数组处理的问题,主要考察的是寻找数组中需要升序排序的最短连续子数组,以便整个数组变得有序。这是一道典型的算法题,通常出现在编程竞赛如 LeetCode 等平台。 在解决这个...

    将一个数组的所有元素排序后输出

    今天,我们将讨论如何使用汇编语言实现一个排序算法来对一个数组中的10个整型元素进行排序。 首先,让我们来了解一下排序算法的基本概念。排序算法是指将一组无序的数据按照某种规则进行排列,使得数据呈现出一定的...

    数据结构实验报告--用简单数组实现下面各种排序算法.doc

    数据结构实验报告主要关注的是如何使用简单数组实现各种经典的排序算法,包括插入排序、希尔排序、冒泡排序、快速排序、简单选择排序以及堆排序、归并排序和基数排序(后两者作为选做)。这些算法在计算机科学中是...

    二叉树(BST)的概念及实现(常见的算法面试题之一).rar

    在基本的数据结构中,如有序数组,无序数组,链表等,都有些不足,如:无序数组查找慢,有序数组虽然查找快,但是插入、删除速度慢,链表插入、删除速度快,但是查找速度慢。而树的出现就能很好的解决这些基本数据...

    有两个数组a,b,大小都为n,数组元素的值任意,无序

    具体而言,我们有两个无序的整数数组 `a` 和 `b`,每个数组的长度都是 `n`。我们的任务是通过交换 `a` 和 `b` 中的某些元素,使得 `a` 的所有元素之和与 `b` 的所有元素之和之间的差尽可能小。 ### 二、问题分析 #...

    java中容器类ArrayList(底层数组实现)和数组存取效率简单测试

    ArrayList是Java集合框架中的一种重要容器,它以数组为基础实现,提供了动态数组的功能。本篇文章将深入探讨ArrayList的工作原理,以及它与普通数组在存取效率上的差异。 ArrayList的核心是内部的数组对象,它在...

    用无序的顺序表实现一个城市数据库

    在数据结构课程设计中,选择无序的顺序表作为基础数据结构来实现这样的数据库是一个很好的实践项目,因为它可以帮助学生理解基本的数据操作以及它们在实际应用中的表现。 无序顺序表是一个简单的线性数据结构,其中...

Global site tag (gtag.js) - Google Analytics