`

数据结构与算法01 之数组

阅读更多

       数组是应用最广泛的数据存储结构。它被植入到大部分的编程语言中,由于数组十分易懂,所以在这里就不赘述,主要附上两端代码,一个是普通的数组(无序数组),另一个是有序数组。有序数组是按关键字升序(或降序)排列的,这种排列使快速查找数据项成为可能,即可以使用二分查找。

    普通数组的java代码

 

  1. public class GeneralArray {  
  2.     private int[] a;  
  3.     private int size; //数组的大小  
  4.     private int nElem; //数组中有多少项  
  5.     public GeneralArray(int max) { //初始化数组  
  6.         this.a = new int[max];  
  7.         this.size = max;  
  8.         this.nElem = 0;  
  9.     }  
  10.     public boolean find(int searchNum) { //查找某个值      
  11.         int j;  
  12.         for(j = 0; j < nElem; j++){  
  13.             if(a[j] == searchNum)  
  14.                 break;  
  15.         }  
  16.         if(j == nElem)  
  17.             return false;  
  18.         else  
  19.             return true;  
  20.     }  
  21.     public boolean insert(int value) { //插入某个值  
  22.         if(nElem == size){  
  23.             System.out.println("数组已满!");  
  24.             return false;  
  25.         }  
  26.         a[nElem] = value;  
  27.         nElem++;          
  28.         return true;  
  29.     }  
  30.     public boolean delete(int value) {//删除某个值  
  31.         int j;  
  32.         for(j = 0; j < nElem; j++) {  
  33.             if(a[j] == value) {  
  34.                 break;  
  35.             }  
  36.         }  
  37.         if(j == nElem)   
  38.             return false;  
  39.         if(nElem == size) {  
  40.             for(int k = j; k < nElem - 1; k++) {  
  41.                 a[k] = a[k+1];  
  42.             }  
  43.         }  
  44.         else {  
  45.             for(int k = j; k < nElem; k++) {  
  46.                 a[k] = a[k+1];  
  47.             }  
  48.         }  
  49.         nElem--;  
  50.         return true;  
  51.     }  
  52.     public void display() { //打印整个数组  
  53.         for(int i = 0; i < nElem; i++) {  
  54.             System.out.print(a[i] + " ");  
  55.         }  
  56.         System.out.println("");  
  57.     }  
  58. }    

 

    有序数组的java代码:

  1. public class OrderedArray {  
  2.     private long[] a;  
  3.     private int size; //数组的大小  
  4.     private int nElem; //数组中有多少项  
  5.     public OrderedArray(int max) { //初始化数组  
  6.         this.a = new long[max];  
  7.         this.size = max;  
  8.         this.nElem = 0;  
  9.     }  
  10.     public int size() { //返回数组实际有多少值  
  11.         return this.nElem;  
  12.     }  
  13. //--------------二分法查找某个值----------------//  
  14.     public int find(long searchNum) {  
  15.         int lower = 0;  
  16.         int upper = nElem - 1;  
  17.         int curr;  
  18.         while(true) {  
  19.             curr = (lower + upper) / 2;  
  20.             if(a[curr] == searchNum)  
  21.                 return curr;  
  22.             else if(lower > upper)   
  23.                 return -1;  
  24.             else {  
  25.                 if(a[curr] < searchNum)   
  26.                     lower = curr + 1;  
  27.                 else  
  28.                     upper = curr - 1;  
  29.             }  
  30.               
  31.         }  
  32.     }  
  33.     public boolean insert(long value) { //插入某个值  
  34.         if(nElem == size){  
  35.             System.out.println("数组已满!");  
  36.             return false;  
  37.         }  
  38.         int j;  
  39.         for(j = 0; j < nElem; j++){  
  40.             if(a[j] > value)  
  41.                 break;  
  42.         }  
  43.           
  44.         for(int k = nElem; k > j; k--) {  
  45.             a[k] = a[k-1];  
  46.         }  
  47.         a[j] = value;  
  48.         nElem++;          
  49.         return true;  
  50.     }  
  51.     public boolean delete(long value) { //删除某个值  
  52.         int j = find(value);  
  53.         if(j  == -1){  
  54.             System.out.println("没有该元素!");  
  55.             return false;  
  56.         }  
  57.         if(nElem == size) {  
  58.             for(int k = j; k < nElem - 1; k++) {  
  59.                 a[k] = a[k+1];  
  60.             }         
  61.             a[nElem-1] = 0;  
  62.         }  
  63.         else {  
  64.             for(int k = j; k < nElem; k++) {  
  65.                 a[k] = a[k+1];  
  66.             }  
  67.         }  
  68.         nElem--;  
  69.         return true;  
  70.     }  
  71.     public void display() { //打印整个数组  
  72.         for(int i = 0; i < nElem; i++) {  
  73.             System.out.print(a[i] + " ");  
  74.         }  
  75.         System.out.println("");  
  76.     }  
  77. }  

    对于数组这种数据结构,线性查找的话,时间复杂度为O(N),二分查找的话时间为O(longN),无序数组插入的时间复杂度为O(1),有序数组插入的时间复杂度为O(N),删除操作的时间复杂度均为O(N)。

 

http://blog.csdn.net/eson_15/article/details/51126182

分享到:
评论

相关推荐

    数据结构与算法 一维数组-二维数组-三维数组

    数据结构与算法是计算机科学的基础,它们涉及到如何有效地组织、存储和处理数据,以及设计高效算法来解决问题。在本主题中,我们将深入探讨一维数组、二维数组和三维数组的概念,以及如何使用模板来实现这些数据结构...

    数据结构 KMP算法及next数组求解过程

    总之,KMP算法和next数组是数据结构中非常重要的部分,它们提供了高效字符串匹配的方法,对于理解和应用字符串处理有着重要意义。通过深入学习和实践,我们可以更好地掌握这一经典算法,提高程序的运行效率。

    JS数据结构与算法.pdf

    JS 数据结构与算法.pdf 本书主要介绍了 JavaScript 语言的基础知识,包括数据结构和算法。以下是该书的详细知识点: 一、JavaScript 基础知识 * 变量和数据类型 * 运算符和控制结构 * 函数和对象 * 数组和字符串 ...

    Java数据结构和算法之Java数组

    本文将深入探讨Java中的基础数据结构——数组,以及与之相关的算法。数组是所有编程语言中最基本的数据结构之一,它允许我们存储一组相同类型的数据,并通过索引来访问它们。 在Java中,数组是一种特殊的对象,它...

    数据结构与算法分析--C语言描述_数据结构与算法_

    数据结构与算法是计算机科学的基础,对于理解和设计高效的软件至关重要。C语言因其高效、底层特性,常被用于实现数据结构和算法,使得程序更接近硬件,性能更优。本资源"数据结构与算法分析--C语言描述"是针对数据...

    【精品课件】数据结构与算法 数据结构与C语言 data structure课程 第4章 串、数组和广义表(共66页).ppt

    数据结构与算法是计算机科学中的核心课程,它探讨如何有效地组织和处理数据。在这个课程中,数据结构与C语言相结合,旨在帮助学习者理解和实现各种数据结构及其相关的算法。课程内容包括C++的复习,从基础概念开始,...

    数据结构与算法.pdf

    数据结构与算法是计算机科学的基础,对于理解和解决复杂问题至关重要。在Java这门面向对象的编程语言中,数据结构和算法的实现具有独特的优势。本文将深入探讨Java中常见的数据结构,包括链表、树、图、数组和队列,...

    C语言描述的数据结构与算法教程

    数据结构与算法是计算机科学的基础,C语言作为一门强大的编程语言,被广泛用于描述和实现这些概念。本教程旨在帮助初学者理解数据结构和算法,并通过C语言进行实践。同时,教程还涉及到机器学习的基本算法,使学习者...

    数据结构与算法多维数组与广义表PPT学习教案.pptx

    数据结构与算法多维数组与广义表 数据结构与算法是计算机科学和信息技术的核心基础,而多维数组和广义表是数据结构中两个重要的概念。本文将对多维数组和广义表进行详细的讲解和分析,并对其在数据结构中的应用进行...

    python数据结构与算法-已转档.pdf

    标题中的“Python数据结构与算法”指向了文档内容的核心主题,即通过Python语言来探索和实现数据结构与算法的相关知识。这部分内容主要涵盖Python编程语言中数据结构的实现方式、算法的设计技巧以及递归等编程概念的...

    数据结构与算法中的c代码

    1. **数组**:数组是最基本的数据结构之一,它允许在相同类型的元素集合中进行随机访问。C语言中数组的使用和操作,包括一维数组、二维数组以及多维数组的声明、初始化和遍历,是初学者必须掌握的基础。 2. **链表*...

    数据结构中有关多维数组的课程设计

    在数据结构的学习中,多维数组是一个至关重要的概念,它为理解和处理复杂的数据组织提供了基础。多维数组,顾名思义,是数组的一种扩展形式,可以看作是由多个一维数组按照特定规则排列而成的结构。在本课程设计中,...

    数据结构与算法分析习题答案

    数据结构与算法分析是计算机科学中的核心课程,它主要研究如何高效地组织和处理数据,以及设计和分析用于解决问题的算法。在这个主题中,我们涵盖了数组、链表、栈、队列、树、图、哈希表等基本数据结构,以及排序、...

    数据结构与算法(JAVA语言版)

    数据结构与算法是计算机科学的基础,对于理解和解决复杂问题至关重要。在Java语言环境下,我们可以利用其丰富的类库和强大的面向对象特性来实现各种数据结构和算法。本资料主要聚焦于如何用Java语言来理解和实现这些...

    数据结构与算法

    内容涵盖了数据结构和算法的基本原理,涉及数组、广义表、链表、散列表、树、图、排序搜索算法以及更多概率算法和动态规则等高级算法。此外,书中还提供了.NET框架类库中的C#语言实现的数据结构和算法。, 《数据结构...

    数据结构与算法书上代码总汇

    数据结构与算法是计算机科学的基础,对于理解和解决复杂问题至关重要。本书的代码总汇涵盖了这一领域的核心概念,通过C++语言实现,为学习者提供了直接可用的实例。下面,我们将详细探讨这些知识点。 1. **数组**:...

    《数据结构与算法(C#语言描述)》源码

    此为数据结构与算法(C#语言描述) 一书的部分源码 本书是在.NET框架下用C#语言实现数据结构和算法的第一本全面的参考书。本书介绍的方法非常实用,采用了时间测试而非大O表示法来分析算法性能。内容涵盖了数据结构...

    数据结构与算法分析–C++描述(第3版,WEISS著,含习题答案)

    《数据结构与算法分析——C++描述》是Mark Allen Weiss教授撰写的一本经典教材,针对计算机科学中的核心主题——数据结构和算法进行了深入浅出的阐述。这本书的第三版不仅涵盖了基本的数据结构如数组、链表、栈、...

Global site tag (gtag.js) - Google Analytics