`
齐在
  • 浏览: 11791 次
社区版块
存档分类
最新评论

数组学习总结

阅读更多

数组

  • 数组是JAVA中最基本的一种数据结构,它是一个连续的存储空间,可以存放多个数据,但是这些数据的数据类型必须相同,也就是说,数组只能用来存放数据类型相同的数据。
  • 数组的长度是固定的,不能用变量来控制数组的长度,但可以是普通常量和用宏定义的常量。比如:int [ ] array =new int[ 10];或者:define M 10; int [ ] array=new int [M]。
  • 数组的起始位置都是0,一个具有10个数据的一维数组a[ 10],数据从a[ 0 ] 到a[ 9 ],而没有a[10],如果调用a[10]就会报错。
  • 数组包括一维数组,多维数组,拿二维数组举例,就是数组的数组。
  • 数组在定义时,有三种方式:

     1 、创建数组时就给元素赋值:

int [ ] array={0,1,2,3};//这个时候不能指定数组的长度,系统会自动分配存储空间,数组数据分别是0,1,2,3。int [ 5] array2={0,1,2,3};是错误的,会报错

2、创建数组时指定数组长度,但不给元素赋值:

int [ ] array2 =new int[4];//每个位置的元素默认值是0

     3、仅定义一个数组变量,并不指向对象:

int [ ] array3;

//这时候调用数组array3中的元素就会出现空指针报错,因为此时只是定义了数组变量,并没有指向一个具体的对象,这个数组变量的默认值是null,这与int [ ] array4={ };是不同的,调用array4是不会报错的,只是每一个位置是没有数据的。

数组的排序方法(以从小到大排序为例):

      1、冒泡排序

比较相邻的元素。如果后一个比第二个小,就交换他们两个。

      2、选择排序

利用循环把前面的元素与后面的所有元素依次比较,找出最小数,将其移到前面。

       3、快速排序

首先任意选取一个数据(通常选用数组的第一个数)作为关键数据,然后将所有比它小的数都放到它前面,所有比它大的数都放到它后面,这个过程称为一趟快速排序。

       4、希尔排序

算法先将要排序的一组数按某个增量d分成若干组,每组中记录的下标相差d.对每组中全部元素进行排序,然后再用一个较小的增量对它进行,在每组中再进行排序。当增量减到1时,整个要排序的数被分成一组,排序完成。

import java.util.Random;


public class Array {

	public static void main(String[] args) {
		Array array=new Array();
		int[]beginarray1=array.array1();
		int []beginarray2=array.array1();
		int []beginarray3=array.array1();
		int[][]beginarray21=array.array2();
		
		System.out.println("一维数组排序前");
		array.showarray(beginarray1);
		System.out.println("");
		System.out.println("冒泡排序后");
		array.showarray(array.maopao(beginarray1));
		
	
		System.out.println("");
		System.out.println("一维数组排序前");
		array.showarray(beginarray2);
		System.out.println("");
		System.out.println("选择排序后");
		array.showarray(array.xuanze(beginarray2));
		
		System.out.println("");
		System.out.println("一维数组排序前");
		array.showarray(beginarray3);
		System.out.println("");
		System.out.println("希尔排序后");
		array.showarray(array.shell(beginarray3));
		
		
		System.out.println("");
		System.out.println("二维数组排序前");
		array.showarray(beginarray21);
		
		System.out.println("");
		System.out.println("寻找二维数组的最大值");
		array.max2wei(beginarray21);

	}
	//创建定义一维数组的方法
	public int[] array1(){
		int []onearray=new int[6];
		Random r=new Random();
		for(int i=0;i<onearray.length;i++){
			onearray[i]=r.nextInt(10);
		}
		return onearray;
	}

	//定义显示一维数组元素的方法
	public void showarray(int[] beginarray){
		for(int i=0;i<beginarray.length;i++){
			System.out.print(beginarray[i]+"       ");
		}
	}
	//利用重载定义显示二维数组元素的方法
	public void showarray(int[][] beginarray2) {
		for(int i=0;i<beginarray2.length;i++){
			for(int j=0;j<beginarray2[i].length;j++){
				System.out.print(beginarray2[i][j]+"       ");
			}
		}
	}
	//创建冒泡排序的方法
	public int[] maopao(int []array){
			for(int i=array.length;i>=0;i--)
			{	
				int j=0;
				for(j=1;j<array.length;j++){
					if(array[j]<array[j-1]){
						int temp=array[j];
						array[j]=array[j-1];
						array[j-1]=temp;
					}
				}
			}
			return array;
		}
	//创建选择排序的方法
	public int[] xuanze(int []array){
		for (int i=0;i<array.length;i++){
			int j=0;
			int temp=i;
			int min=array[i];
			for(j=i+1;j<array.length;j++){
				if(array[j]<array[temp]){
					temp=j;
					min=array[temp];
				}
			}
			array[temp]=array[i];
			array[i]=min;
		}
		return array;
	}

	//创建定义希尔排序的方法
	public int[] shell(int[] array) {
		for(int k=array.length/2;k>0;k/=2){
			for(int i=k;i<array.length;i++){
				int temp=array[i];
				int j=0;
				for(j=i;j>=k;j-=k){
					if(temp<array[j-k]){
						array[j]=array[j-k];
					}
					else{
						break;
					}
				}
				array[j]=temp;
			}
		}
		return array;
		}
	

	//创建定义二维数组的方法
	public int [][]array2(){
		int [][]twoarray=new int [4][3];
		Random r=new Random();
		for(int i=0;i<twoarray.length;i++){
			for(int j=0;j<twoarray[i].length;j++){
				twoarray[i][j]=r.nextInt(50);
			}
		}
		return twoarray;
	}
	//创建查找二维数组最大值的方法
	public void max2wei (int[][]array){
		int max=array[0][0];
		int number=0;
		for(int i=0;i<array.length;i++){
			for(int j=0;j<array[i].length;j++){
				if(array[i][j]>max){
					max=array[i][j];
				}
			}
		}
		for(int i=0;i<array.length;i++){
			for(int j=0;j<array[i].length;j++){
				if(array[i][j]==max){
					number++;
				}
			}
		}
		System.out.println("最大值是"+max+"       数目为"+number);
	}

}

 结果如下图:

 

 

<!--EndFragment-->

  • 大小: 29.6 KB
0
0
分享到:
评论

相关推荐

    JS中Array数组学习总结.docx

    数组的`length`属性可获取数组元素的数量,同时可用于动态扩展或缩短数组。例如,`colors[colors.length] = 'newValue'`会在数组末尾添加新元素。 数组操作包括: 1. **删除**:`splice(index, count)`,删除从`...

    关于C语言数组的总结学习

    "关于C语言数组的总结学习" C语言数组是C语言中的一种基本数据结构,它允许程序员存储和操作大量的数据。数组是一种数据结构,它由多个相同类型的元素组成,每个元素都有一个索引或下标,以便于访问和操作。 为...

    JS中Array数组学习总结

    JavaScript中的Array数组是编程中的一个基础概念,它用于存储一系列的数据项。在JavaScript中,数组的类型可以是数字、字符串、对象等,是一种非常灵活的...学习JavaScript数组的各种用法是前端开发不可或缺的一部分。

    学习PHP的数组总结【经验】

    总结来说,PHP的数组处理提供了丰富的功能和方法,这些功能和方法大大提高了数组操作的便捷性和效率。学习PHP的数组操作对于任何PHP开发者来说都是非常重要的基础技能。掌握数组的创建、遍历、增删改查等操作是每个...

    一维数组总结,适合初学自学者

    一维数组的创建以及常用方法数组类型的介绍与总结,适合初学者,预习自学

    大一c语言数组实验心得.docx

    通过实验和实践,掌握了数组的使用方法,并对指针和数组的关系进行了总结和分析。 一、数组的定义和使用 数组是 C 语言中一种基本的数据结构,用于存储一组相同类型的数据。数组可以是一维数组或二维数组,一维...

    C语言中数组应用总结.pdf

    本篇文章主要围绕数组在C语言中的应用进行总结,并通过实例来介绍数组操作的基本思想和算法描述,同时指出实际应用中常出现的问题。 数组在C语言中的应用可以划分为多个方面,包括但不限于排序、插入、删除、合并和...

    PHP数组的总结(很全面的哦!)

    ### PHP数组的全面总结 #### 一、PHP数组的基础概念 ...以上就是关于PHP数组的全面总结,包括了数组的创建、初始化、访问、多维数组处理以及各种数组操作的方法,希望对大家学习PHP数组有所帮助。

    VBA数组的学习笔记,让你更好的了解数组

    ### VBA数组学习笔记 #### 一、数组的声明与初始化 在VBA中,数组是一种非常重要的数据结构,用于存储一系列同类型的值。数组的声明与其他变量类似,可以通过`Dim`、`Static`、`Private`或`Public`语句进行。与...

    js数组操作学习总结.doc

    JavaScript中的数组操作是编程中非常常见且重要的部分,它提供了多种方法来创建、修改和处理数组。以下是对这些操作的详细解释: 1. **shift()**:`shift()` 方法从数组的第一个位置移除元素,并返回移除的元素值。...

    Array_C#数组学习_

    在C#编程语言中,数组是一种非常基础且...总结,C#中的数组是数据处理的基础,理解并熟练掌握数组的各种操作对于编写高效和整洁的代码至关重要。通过实例和练习,你可以更好地理解这些概念,并将其应用到实际项目中。

    数组和指针学习资料

    C语言指针经验总结可能包含实践中的技巧和陷阱,帮助开发者在实际项目中更好地应用指针。 通过这些学习资料,你将能够: 1. 理解数组的创建、访问和遍历。 2. 掌握指针的基本操作,包括声明、初始化、赋值和解引用...

    C语言数组学习教案.pptx

    总结来说,C语言的数组提供了一种有效存储和操作大量数据的方式。理解和掌握数组的定义、引用和初始化是C语言编程的基础,也是编写复杂程序的关键。通过数组,我们可以方便地处理批量数据,例如在上述示例中计算...

    js数组相减简单示例【删除a数组所有与b数组相同元素】

    扩展阅读中提及的专题,例如《JavaScript数组操作技巧总结》、《JavaScript遍历算法与技巧总结》等,为读者提供了更多的学习资源。通过这些资源,读者可以更加全面地掌握JavaScript中数组操作的多种技巧和方法,从而...

    java数组总结共9页.pdf.zip

    这个"java数组总结共9页.pdf.zip"文件可能涵盖了以上所有知识点,并可能包含示例代码和练习,以帮助学习者深入理解和应用这些概念。在学习过程中,通过实践和解决实际问题,可以更好地掌握Java数组的使用。

    js学习总结(8)源码

    JavaScript数组学习JavaScript数组学习JavaScript数组学习JavaScript数组学习JavaScript数组学习JavaScript数组学习JavaScript数组学习

    后缀数组学习笔记!!!

    总结起来,后缀数组是一种强大的字符串处理工具,通过高效的构建算法,可以实现字符串的快速查询和分析。了解并掌握后缀数组的构造原理和应用,对于处理大规模文本数据和解决相关问题具有重要意义。

    Java数组操作方法总结2.pdf

    本篇文章总结了十个重要的Java数组操作方法,适用于学习和复习Java编程知识。 1. **声明数组**: 在Java中声明数组时,我们需要指定数组的类型,然后用大括号{}初始化数组。例如,声明一个包含五个字符串的数组: ...

Global site tag (gtag.js) - Google Analytics