`
云十四月
  • 浏览: 12264 次
  • 性别: Icon_minigender_2
社区版块
存档分类
最新评论

java数组的总结

 
阅读更多

数组总结

 

数组的声明:

类型 [] 数组名 或 类型 数组名[] 

声明数组时不能指定其长度

数组的创建:

Java中使用关键字new创建数组对象,格式为:
数组名 = new 数组元素的类型 [数组元素的个数]

数组的结构:

在内存中的空间是线性的。其传递为引用传递,即传首地址。一旦创建数组,数组大小便不可改变。length属性表示其大小。

 

【数组排序】

稳定算法:冒泡排序、插入排序、归并排序和基数排序

不稳定算法:选择排序、快速排序、希尔排序、堆排序

 

稳定性的概念(摘自百度百科):

假定在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序,这些记录的相对次序保持不变,即在原序列中,ri=rj,且ri在rj之前,而在排序后的序列中,ri仍在rj之前,则称这种排序算法是稳定的;否则称为不稳定的。

即判断排序后原来相同元素的先后顺序是否发生改变,若是,则不稳定。

 

冒泡排序:

    比较相邻两个元素的大小,将较小的元素向前调整。若相邻元素相同,则不需要调整,故先后顺序不会改变。故为稳定算法。

例:

4# 6

4# 6

4# 6

46

46

46

 

选择排序:

    依次给每个位置选择最小元素,交换对应位置的元素。

例: 

5   5#  2  1  

1   5#  2  5  

1   2   5# 5  

可看出5和5#的位置发生了变化。故是不稳定算法。

 

插入排序
    是在一个已经有序的小序列的基础上,一次插入一个元素。只有第一个元素,就是第一个元素。想要插入的元素和已经有序的最大者开始比

例:(|之前为有序,|后一个为要插入的元素

2|  4  9    5# 

 5| 4  9  8   5#

  5| 9  8  1  5#

   9| 8   5#

    9| 1  5#

     9| 5#

 2  4  5  5# 8  9|

对于两个相同元素,后一个元素在插入时,从有序序列末位开始往前比较,当遇到相同元素后停止,并不交换顺序(仍在后面)。故为稳定的。 

 

希尔排序

    将整个序列分成若干子序列,分别进行插入排序实际上是分组插入。虽然插入排序是稳定的,但在不同组别的排序过程中,相同的元素可能发生交叉,稳定性就会被打乱,所以希尔排序是不稳定的。 

例:

 49  38  65  97  76  13  27  49# 55  04  (初始)

 13  27  49# 55  04  49  38  65  97  76  (步长为5)

 13  04  49# 38  27  49  55  65  97  76  (步长为3)

 04  13  27  38  49# 49  55  65  97  76  (步长为1)

可看出两个49的相对顺序变了。 

 

 

附:上述四种排序算法的源代码

/**
	 * 对给定一维数组做冒泡排序
	 * @param arrayOne 需要排序的数组
	 * @return 经过排序的数组
	 */
	public int[]  paixu_maopao(int [] arrayOne) {
		
		for (int i = 0; i < arrayOne.length; i++) {
			for (int j = i+1; j <arrayOne.length; j++) {
				if(arrayOne[i]>arrayOne[j]){
					int temp=arrayOne[j];
					arrayOne[j]=arrayOne[i];
					arrayOne[i]=temp;
					
				}printArrayOne(arrayOne);
			}
			
		}
		
		return arrayOne;
	}
	
	/** 
	 *  对给定一维数组做选择排序
	 * @param arrayOne 需要排序的数组
	 * @return 经过排序的数组
	 */
	
	public int[] paixu_xuanze(int [] arrayOne) {
		for (int i = 0; i < arrayOne.length; i++) {
			int low=i;
			for (int j = i+1; j < arrayOne.length; j++) {
				if(arrayOne[j]<arrayOne[low]){
				low=j;
				}//printArrayOne(arrayOne);
			}
			int temp=arrayOne[i];
			arrayOne[i]=arrayOne[low];
			arrayOne[low]=temp;
		}
		
		return arrayOne;
	}
	
	
	/** 
	 *  对给定一维数组做插入排序
	 * @param arrayOne 需要排序的数组
	 * @return 经过排序的数组
	 */
	private int[] paixu_charu(int [] arr) {
		for (int i = 1; i < arr.length; i++) {
			for (int j = i; j > 0; j--) {
				if(arr[j-1]>arr[j]){
					int temp=arr[j];
					arr[j]=arr[j-1];
					arr[j-1]=temp;
				}
			}
		}
		return arr; 
	}
	/** 
	 *  对给定一维数组做希尔排序
	 * @param arrayOne 需要排序的数组
	 * @return 经过排序的数组
	 */
	private int []  paixu_xier(int [] arr) {
		for(int inc=arr.length/2; inc>0;inc/=2){
			for (int i = inc; i < arr.length; i++) {
				int temp = arr[i];
				int j=0;
				for (j = i ;j >= inc; j-=inc) {
					if(temp < arr[j-inc]){
						arr[j]=arr[j-inc];
						
					}else{
						break;
					}
				}
				arr[j]=temp;
			}
			
			
		}
		return arr;
	}

 

<!--EndFragment-->
1
1
分享到:
评论

相关推荐

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

    在这个"java数组总结共9页.pdf.zip"的文档中,我们很可能会找到关于Java数组的全面概述,包括其定义、创建、初始化、操作以及一些重要的特性。下面是对Java数组的详细解释。 一、数组的定义 在Java中,数组是一种...

    java数组总结使用手册

    ### Java数组总结使用手册 #### 一、数组基础概念 **1.1 什么是数组** 数组是一种基本的数据结构,用于存储一系列相同类型的元素。在Java中,数组是一种对象,它包含固定数量的相同类型的元素。数组中的每一个...

    Java数组与内存控制

    ### Java数组与内存控制 #### 一、Java数组在内存分配方面的知识 ##### 1.1 数组初始化 - **声明数组的时候如何分配内存:** - 在Java中,数组的声明并不直接分配内存,而仅仅是创建了一个数组引用变量。例如: ...

    java数组结构图

    对数组的总结和分析,通过这个结构记住它,在开发的过程中使用

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

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

    java数组

    总结,Java数组作为基本的数据结构,是程序设计的基础。理解其创建、访问、遍历和操作方法,以及与字符串、集合的区别和联系,对于编写高效、可靠的Java代码至关重要。同时,熟练掌握`Arrays`类的使用能进一步提升...

    java 数组 PPT

    总结,Java数组是编程基础,理解其概念、创建和操作方法对于编写高效、可靠的代码至关重要。在实际编程中,根据需求选择合适的数据结构,如数组或集合,是解决问题的关键。通过深入学习和实践,可以更好地掌握数组这...

    java 数组和字符串

    ### Java数组和字符串详解 #### 实验目标与背景 本次实验旨在深化理解Java中的数组与字符串操作,聚焦于`String`类与`StringBuffer`类的掌握,包括它们的常用方法、相等性判断的不同方式、数组的创建及引用机制,...

    Java数组讲解

    ### Java数组讲解 #### 1. 数组基本概念与初始化 - **定义**: 数组是一种基本的数据结构,用于存储相同类型的多个元素。这些元素在内存中是连续存储的。 - **初始化**: 可以通过两种方式进行初始化:动态初始化和...

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

    Java数组操作方法总结 Java数组操作方法总结是Java编程语言中一种基本的数据类型,数组是由一组相同类型的变量所组成的数据类型,它们以一个共同的名称表示,数组中的个别元素则以标注来表示其存放的位置。本文将...

    数组总结资源文档.xmind

    java数组总结文档

    Educoder题目:Java入门 - 数组进阶答案解析.md

    Educoder题目:Java入门 - 数组进阶答案解析

    java数组与字符串用法小结

    ### Java数组与字符串用法小结 在Java编程语言中,数组和字符串是两种非常重要的数据类型,它们在处理大量数据或文本时扮演着至关重要的角色。本文将围绕标题“java数组与字符串用法小结”及描述中的知识点进行详细...

    java数组 遍历方法集合

    ### Java数组遍历方法集合 在Java编程语言中,数组是一种基本的数据结构,用于存储同类型数据元素的集合。为了处理这些数据元素,通常需要遍历数组中的每一个元素来进行访问或操作。本文将详细介绍三种常用的Java...

    java数组与方法数组的定义及使用

    在Java编程语言中,数组是一种特殊的对象,它用于存储同类型的多个数据项。数组的定义、创建和使用是Java编程的基础,而方法数组则引入了更高级的概念,允许我们在一个数组中存储方法引用。让我们深入探讨这两个主题...

    java 数组元素类型不匹配异常(ArrayStoreException)

    在Java编程语言中,数组是一种固定...总结来说,理解Java中的数组类型和`ArrayStoreException`是编写安全、无错代码的关键。避免此异常的最佳实践是确保在存储元素时类型兼容,并在必要时进行适当的类型检查和转换。

    Java中数组常用方法的总结

    我对Java中数组的方法做了一下总结,希望能帮到各位

Global site tag (gtag.js) - Google Analytics