`
哈达f
  • 浏览: 120316 次
  • 性别: Icon_minigender_1
  • 来自: 广西
社区版块
存档分类
最新评论

数组以及对其常用的操作

    博客分类:
  • j2se
 
阅读更多

数组:

#######

本身就是一个容器,用来存储数据。

特点:是固定长度的。

好处:给元素进行编号,从零开始。同时也可以通过length属性获取数组长度。

 

什么时候使用数组呢?

当数据较多时,通常为了方便操作这些数据都需要进行临时存储。

习惯:通常操作数组都需要进行遍历。获取数组中的元素需要一个指针。

通过对指针的值的改变就可以对数组中的数据进行操作。

常出现的问题:

1,数组角标越界异常。ArrayIndexOutOfBoundsException

什么时候会发生呢?当使用到了数组中不存在的角标时就会发生该异常。

2,空指针异常。NullPointerException

当引用型变量没有任何指向时,还在使用该引用变量操作实体内容,会发生该异常。

########

-------------------

int[] arr = new int[3];

该句代码在内存中的分配情况。

堆内存:开辟一个空间,建立一个数组实体,并对数组中的元素进行了默认初始化。

栈内存:定一个局部变量,存放了该实体在对内存中的首地址值。

 

栈内存特点:存放局部变量,当该变量使用完毕(生命周期结束),自动被释放。

堆内存特点:存放数组和对象,每一个实体都有内存地址值,堆内存中的变量都有默认初始化值,通过垃圾回收机制对堆内存中 的不在被使用的实体进行回收。

 

--------------------

 

数组的常见操作:

1,遍历。

public static void printArr(int[] arr)

{

for(int x=0; x<arr.length; x++)

{

if(x!=arr.length-1)

System.out.print(arr[x]+",");

else

System.out.println(arr[x]);

}

}

2,获取最值。int[] arr = new int[3];

arr = null;

System.out.println(arr.length);

getMax(null);

public static int getMax(int[] arr)

{

if(arr==null)

throw new RuntimeException();

int max = arr[0];

for(int x=1; x<arr.length;x++)

{

if(arr[x]>max)

max = arr[x];

}

return max;

}

 

public static int getMin(int[] arr)

{

int min = 0;

 

for(int x=1; x<arr.length; x++)

{

if(arr[x]<arr[min])

min = x;

}

return arr[min];

}

3,排序。

选择排序

特点:选择一个位置,通过该位置上变化的元素和其他元素进行比较,走完一圈,该位置出现最值。

内循环结束一次,在0角标位出现最值。

代码体现形式:

public static void selectSort(int[] arr)

{

for(int x=0; x<arr.length; x++)

{

for(int y=x+1; y<arr.length; y++)

{

if(arr[x]>arr[y])

{

swap(arr,x,y);

}

}

}

}

public static void bubbleSort(int[] arr)

{

for(int x=0; x<arr.length; x++)//for(int x=arr.length-1; x>=0; x--)

{

for(int y=0; y<arr.length-x-1; y++)//for(int y=0; y<x; y++)

{

if(arr[y]>arr[y+1])

{

swap(arr,y,y+1);

}

}

}

}

y<arr.length-x-1:

-x : 通过不断循环,减少每一次参与比较元素的个数。

-1 :防止y+1的角标越界。

 

private static void swap(int[] arr,int x,int y)

{

int temp = arr[x];

arr[x] = arr[y];

arr[y] = temp;

}

 

4,查找。

public static int getIndex(int[] arr,int key)

{

for(int x=0; x<arr.length; x++)

{

if(arr[x]==key)

return x;

}

return -1;//为什么返回-1呢?因为数组中没有-1这个角标,所以可以通过-1来表示元素不存在的情况。

}

 

折半查找,二分查找。

这种方式有一个必要的前提:被查找的数组一定要是有序的。

 

public static int halfSearch(int[] arr,int key)

{

int max,min,mid;

max = arr.length-1;

min = 0;

mid = (max+min)/2;

 

while(arr[mid]!=key)

{

if(key>arr[mid])

min = mid + 1;

else if(key<arr[mid])

max = mid - 1;

if(min>max)

return -1;

mid = (max+min)/2;

}

return mid;

}

 

public static int halfSearch(int[] arr,int key)

{

int max,min,mid;

max = arr.length-1;

min = 0;

while(min<=max)

{

mid = (max+min)/2;

 

if(key>arr[mid])

min = mid +1 ;

else if(key<arr[mid])

max = mid - 1;

else

return mid;

}

return -1;

}

分享到:
评论

相关推荐

    MATLAB 字符数组和字符串数组以及文本操作常用函数.md

    本文将详细介绍 MATLAB 中字符数组和字符串数组的概念与操作方法,以及一些常用的文本操作函数。 #### 二、字符数组 **定义与创建** 字符数组是一种基本的数据结构,主要用于存储和处理文本数据。在 MATLAB 中,...

    7.1.1 一维数组与常用操作.py

    7.1.1 一维数组与常用操作.py7.1.1 一维数组与常用操作.py7.1.1 一维数组与常用操作.py7.1.1 一维数组与常用操作.py7.1.1 一维数组与常用操作.py7.1.1 一维数组与常用操作.py7.1.1 一维数组与常用操作.py

    Linux C字符串,字符数组,结构体常用操作

    Linux C 开发中有关 字符串,字符数组,结构体常用操作总结

    操作java数组的常用工具类

    ### 操作Java数组的常用工具类详解 在Java编程中,数组是一种常见的数据结构,用于存储固定大小的同类型元素集合。为了简化数组的操作并提高代码的效率与可读性,Java提供了`Arrays`类,这是一个包含了一系列静态...

    JavaScript jQuery 中定义数组与操作及jquery数组操作

    5. **数组常用函数** - `concat()`:连接两个或更多数组并返回新的数组。 - `push()`:向数组末尾添加一个或多个元素,并返回新的长度。 - `pop()`:删除并返回数组的最后一个元素。 - `shift()`:删除并返回...

    Java编程中数组的深入解析及其常用操作技巧

    内容概要:本文档详细介绍了Java编程中数组的概念,数组的声明、创建、初始化,以及各种常用的数组操作技巧。首先讲解了数组的基本特征——长度固定、同类型存储及在堆中的分配;接着深入探讨了不同维度的数组声明、...

    数组与特殊矩阵基本操作及练习

    5. 图论:邻接矩阵是图的常用表示,对角矩阵用于表示节点的权重。 四、编程实践 在编程中,C++的`std::vector`、C的动态数组、Java的`ArrayList`、Python的列表等都是数组的实现。处理特殊矩阵时,可使用库函数,...

    matlab数组字符串 字符数组和字符串数组+文本操作常用函数 算法开发、数据可视化、数据分析以及数值计算 Matlab课程

    在MATLAB中,数组字符串、字符数组和字符串数组是处理文本数据的重要工具,它们在算法开发、数据可视化、数据分析及...字符数组和字符串数组+文本操作常用函数.mp4`进行实践,理论与实践相结合,才能真正掌握这些知识。

    数组以及排序算法

    5. 遍历:常用for循环遍历数组,如`for (int i = 0; i ; i++) { System.out.println(numbers[i]); }` 二、排序算法 排序是计算机科学中的经典问题,有多种方法可以对数组进行排序。以下是一些常见的排序算法: 1. ...

    PHP 数组的常用函数

    本篇文章将深入探讨PHP中数组的常用函数,帮助你更好地理解和使用它们。 1. 创建数组 在PHP中,我们可以通过`array()`函数来创建数组。例如: ```php $array = array('apple', 'banana', 'orange'); ``` 也可以使用...

    C语言数组的数组 排序,删除,查找联合搬

    在实际编程中,我们经常需要对数组进行排序、删除和查找等操作,以实现更高效的数据处理。本文将深入探讨这些操作,并介绍一种联合搬算法来优化这些操作。 一、数组的排序 在C语言中,最常用的排序算法之一是冒泡...

    js中数组Array的一些常用方法总结.docx

    Array对象提供了许多内置方法,方便我们对数组进行各种操作。以下是一些常用的Array方法的详细说明: 1. **`length`**:这是一个属性,而非方法,但它非常基础且重要。它返回数组的元素个数。 2. **`push()`**:向...

    PHP、web前端开发-数组的常用操作.pptx

    数组的常用操作主要包括创建、更新、读取和删除,也就是常说的CRUD操作。这些操作在处理任何动态数据时都至关重要,尤其是在网页交互和服务器端处理用户请求时。 **创建数组(CREATE)** 创建数组通常通过指定一组...

    JS数组中对象去重操作示例

    在JavaScript编程中,数组是常用的数据结构,而处理数组中的对象去重问题是一个常见的需求。在给定的示例中,我们看到一个包含多个对象的数组`tmp`,每个对象有`id`和`magicId`两个属性。下面将详细讨论如何实现这种...

    易语言数组文本替换

    通过循环遍历数组,对每个元素进行查找和替换操作,最终得到处理后的数组。 五、应用场景 1. 数据清洗:在数据分析或处理大量文本数据时,可能需要统一替换某些特定的文本,如空格、特殊字符等。 2. 文本过滤:在...

    使用快速排序法对一维数组进行排序

    为了更深入地理解这个程序,你需要查看这个文件,了解其具体的实现细节,包括基准的选择方式、如何进行分区操作以及递归排序的逻辑。此外,你还可以通过运行这个程序并分析其输出,来验证其正确性和效率。

    JavaScript常用数组操作方法1

    以下是对标题和描述中提到的一些JavaScript数组操作方法的详细说明: 1. **concat()**: `concat()` 方法用于合并两个或多个数组,但不改变原始数组。它返回一个新数组,包含所有数组的元素。例如: ```...

    深入了解Java数组操作及常用算法题

    本文介绍了如何使用Java数组进行常见操作,并深入了解了一些常用的算法。通过对题目代码的分析和解决方案的说明,我们了解了每个操作的实现方法和作用。掌握这些数组操作和算法对于编写高效的Java程序非常重要,它们...

    JS根据json数组多个字段排序及json数组常用操作

    综上所述,本文通过具体实例详细介绍了JavaScript中如何根据JSON数组的多个字段进行排序以及对JSON数组进行一系列常用操作,包括获取特定属性的对象、删除对象、修改对象属性以及向数组中添加对象。这些操作是处理...

Global site tag (gtag.js) - Google Analytics