`
lijilin
  • 浏览: 2760 次
  • 性别: Icon_minigender_1
  • 来自: 大连
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

数组与排序

 
阅读更多
1.数组概念
数组是一个线性的存储结构(容器)。
数组在内存中是一个连续的存储空间。
数组智能存储固定的某一种数据类型。

2.一维数组定义与使用
定义一维数组的方式:
数据类型 [] 数组名 = new 数据类型[长度];
int [] array = new int[10];
int value = array[0];  //0
Student [] array = new Student[10];
Student value = array[0];  //null

数据类型 [] 数组名 = {值,...};

数据类型 [] 数组名 = new 数据类型[]{值,...};

数据类型 [] 数组名 ;
数组名 =  new 数据类型[长度];

数组有哪些方法和属性呢?
length属性,用来获取数组容器中能存储元素的总数(是从1开始计算的)
数组的下标是从0开始计算的

获取数组能存储元素的总数:int length = 数组名.length;
得到下标为1位置的元素内容:数据类型 变量名 = 数组名[下标];

3.二维数组定义与使用
定义二维数组的方式:
数据类型 [][] 数组名 = new 数据类型[行][列];

数据类型 [][] 数组名 = {{值,...},...};

数据类型 [][] 数组名 = new 数据类型[][]{{值,...},...};

数据类型 [][] 数组名 ;
数组名 =  new 数据类型[行][列];

二维数组有哪些方法和属性呢?
只有length属性
获取二维数组的行数:int row = array.length;
获取二位数组某一个行的列数:int column = new array[下标].length;

得到二维数组某一个单元格的元素值:int value = array[row][column];
/**
* 一维数组的创建与排序方法
*/
public class OneArray {

/**
* 程序入口的主函数
*/
public static void main(String[] args) {
OneArray array=new OneArray();//实例化一个OneArray类的对象
int [] arr=array.createArray(30);//调用创建一维数组的方法来创建一个有30个元素的以为数组
System.out.print("原始数组元素如下:");
printArray(arr);

int [] temp=array.BubbleSort(arr);
System.out.println("");
System.out.print("冒泡排序后数组元素如下:");
printArray(temp);

ChooseSort(arr);
System.out.println("");
System.out.print("选择排序后数组元素如下:");
printArray(arr);

ShellSort(arr);
System.out.println("");
System.out.print("希尔排序后数组元素如下:");
printArray(arr);

InsertSort(arr);
System.out.println("");
System.out.print("插入排序后数组元素如下:");
printArray(arr);
}

/**
*创建一维数组的方法
*/
public static int [] createArray(int length){
int [] array=new int[length];//创建一个一维数组
for(int i=0;i<array.length;i++){
int rand=new Random().nextInt(1000);//产生一个0-1000的随机整数
array[i]=rand;//用循环遍历数组的每个位置并且给每个位置填上一个随机值
}
return array;
}

/**
* 打印数组元素的方法
*/
public static void printArray(int [] array){
if(array==null){return;}//如果要打印的数组为null,则不打印
for(int i=0;i<array.length;i++){
if(i%10==0)System.out.println(""); //控制没输出10个元素就换行输出
System.out.print(array [i]+"\t");//用循环遍历每个元素并且输出
}
}

/**
* 冒泡排序法
* 冒泡排序算法的运作如下:
比较相邻的元素。如果第一个比第二个大,就交换他们两个。
对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。
针对所有的元素重复以上的步骤,除了最后一个。
持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。[1]
*/
public int [] BubbleSort(int [] x){
for(int i=0;i<x.length;i++){
for(int j=i+1;j<x.length;j++){
if(x [i]>x [j]){
int temp=x [i];//定义一个中间变量存放两个元素中较大的值
x [i]=x [j];//将两个元素中值较小的元素赋给数组中下表较小的元素
x [j]=temp;//将两个元素中值较大的元素赋给数组中下标较大的元素
}
}
}
return x;
}

/**
* 选择排序法
*/
public static int [] ChooseSort(int [] arr){
for(int i=0;i<arr.length;i++){
int lowerIndex=i;//找出最小的一个索引
for(int j=i+1;j<arr.length;j++){
if(arr [j]<arr [lowerIndex]){lowerIndex=j;}
}
int temp=arr [i];  //交换
arr [i]=arr [lowerIndex];
arr [lowerIndex]=temp;
}
return arr;
}

/**
* 希尔排序法
*/
public static int [] ShellSort(int [] x){
//进行分组
for(int incre=x.length/2;incre>0;incre=incre/2){
//再每个组内进行排序
for(int i=incre;i<x.length;i++){
int temp=x[i];
int j=0;
for(j=i;j>=incre;j-=incre){
if(temp<x[j-incre]){
x[j]=x[j-incre];
}else{break;}
}
}
}
return x;
}

/**
* 插入排序法
*/
public static int [] InsertSort(int [] x){
for(int i=1;i<x.length;i++){
for(int j=i;j>0;j--){
if(x[j]<x[j-1]){
int temp=x[j];
x[j]=x[j-1];
x[j-1]=x[j];
}
}
}
return x;
}

}

/**二维数组*/
public class TwoArray {

/**
* 二位数组的创建与排序
*/
public static void main(String[] args) {
int [][] arr=new int [10][10];
for(int i=0;i<arr.length;i++){
for(int j=0;j<arr[i].length;j++){
int rand=new Random().nextInt(200)+100;//产生一个100-300之间的随机整数
arr [i][j]=rand;
}
}
printArray(arr);
maxArray(arr);
}


/**
* 定义打印数组的方法
*/
public static void printArray(int [][] x){
if(x==null){return;}//若数组为空,则不打印
for(int i=0;i<x.length;i++){
for(int j=0;j<x [i].length;j++){
if(j%10==0) {System.out.println("");}//没输出10个元素就换行
System.out.print(x [i][j]+"\t");
}
}
}

/**
* 找出二维数组最大元素的方法
*/
public static void maxArray(int [][] x){
int max=x [0][0];//设二维数组中的第一个为最大的值
int h=0;int k=0;
for(int i=0;i<x.length;i++){
for(int j=0;j<x[i].length;j++){
if(x[i][j]>=max){
max=Math.max(max, x[i][j]);
h=i;k=j;
}
}

}
System.out.println("");
System.out.println("二维数组中最大值为:"+max+"    位于数组的第"+(h+1)+"行         第"+(k+1)+"列");
System.out.println("");
}
}
分享到:
评论

相关推荐

    数组与排序算法:从基础到进阶

    《数组与排序算法:从基础到进阶》是一本全面深入探讨数组基础知识和各种排序算法的实用指南。本书旨在为读者提供一个系统化的学习路径,从数组的基本概念开始,逐步深入到复杂的排序算法,帮助读者建立扎实的算法...

    数组的排序方法-sort(教辅)

    数组的排序方法-sort(教辅)数组的排序方法-sort(教辅)数组的排序方法-sort(教辅)数组的排序方法-sort(教辅)数组的排序方法-sort(教辅)数组的排序方法-sort(教辅)数组的排序方法-sort(教辅)数组的排序...

    C# 字符串数组随机排序 简单方法

    C# 字符串数组 随机排序 方法 通过生成随机数,来对换改变任意数组变量值,此方法相对其它类型数组也通用

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

    3. **递归排序**:对基准左右两边的子数组分别进行快速排序,这个过程一直持续到子数组只有一个元素,排序结束。 在实际应用中,选择基准的方式会影响快速排序的效率。常见的方法有以下几种: - **首尾取中法**:取...

    VB.NET二维数组快速排序(更新)

    VB.NET二维数组快速排序(更新) 'OldArrays(),为排序二维数组;NewArrays(),为存放结果数组,SortColumnsOrOrders(),传递排序参数数组,偶数个为排序列号,奇数为升降序,0为升序,1为降序;FieldRow,是否有字段行...

    LabVIEW二维数组排序.rar

    总结来说,LabVIEW中的二维数组排序涉及理解二维数组的结构,掌握各种排序方法,包括按行、按列及自定义排序,以及处理数据类型转换和性能优化。熟练掌握这些技能将使你在LabVIEW编程中游刃有余,处理各种数据处理...

    java数组自定义排序

    java中数组的自定义排序,种类繁多,简单实现,可自由操控。

    c语言二维数组冒泡排序

    这个过程会反复进行,直到整个数组排序完成。对于二维数组,我们通常是对每一行进行单独的冒泡排序,因为二维数组中的元素并不是连续存储的,无法直接进行整体排序。 下面是一个基本的C++实现二维数组冒泡排序的...

    C#实现对二维数组排序的方法

    总结来说,本文介绍的C#实现二维数组排序的方法,通过将二维数组转换为`DataTable`并利用其内置的排序功能,提供了一种灵活且高效的解决方案。这种方法不仅适用于各种数据类型,而且保持了原始数组的引用,使得排序...

    二维数组如何进行冒泡排序

    ### 二维数组冒泡排序详解 #### 一、引言 冒泡排序是一种简单的排序算法,在数据处理领域有着广泛的应用。对于一维数组而言,冒泡排序实现起来...希望本文能够帮助初学者更好地理解二维数组排序的原理和实现细节。

    二维数组排序

    ### 二维数组排序知识点解析 #### 一、二维数组与排序简介 在计算机科学中,二维数组是一种数据结构,它可以被视为由多个一维数组组成的数组。每个一维数组称为一个行,而每个行中的元素则构成了列。二维数组通常...

    将两数组合并成一个数组并排序

    数组的合并与排序是常见的操作,尤其是在处理大量数据时。在这个场景中,我们要讨论如何在C语言中将两个已排序的数组合并成一个新的排序数组。 首先,让我们了解数组的基本概念。数组是由相同类型元素构成的集合,...

    易语言自定义数据类型数组排序

    本话题聚焦于“易语言自定义数据类型数组排序”,将深入探讨如何在易语言中创建、操作自定义数据类型数组,并实现各种排序算法,如根据产地、类别和售价等属性进行排序。 自定义数据类型在易语言中允许我们定义包含...

    java_二维数组冒泡行列排序源代码

    使用冒泡排序实现的java语言编写的关于二维数组的排序,实现了行、列的排序输出。

    java 部分数组递增排序

    在编程领域,数组排序是一个常见的任务,特别是在Java中。这里我们关注的是“部分数组递增排序”,这通常指的是对一个数组中的某一段元素进行升序排列。以下是对这个主题的详细解释。 首先,理解基本概念。数组是...

    数组以及排序算法

    在编程领域,数组和排序算法是基础且至关重要的概念,特别是在Java编程中。数组是一种数据结构,它允许我们在内存中存储相同类型的数据项,并通过索引来访问这些元素。理解数组和掌握高效的排序算法对于编写高性能的...

    JAVA语言实现随机数的输入以及数组的排序

    JAVA\数组排序,JAVA语言实现随机数的输入以及数组的排序。JAVA 随机数 数组排序

    matlab数组排序matlab数组排序

    matlab数组排序matlab数组排序matlab数组排序matlab数组排序matlab数组排序matlab数组排序matlab数组排序matlab数组排序matlab数组排序matlab数组排序matlab数组排序matlab数组排序matlab数组排序matlab数组排序...

    易语言文本数组排序39源码,易语言文本数组随机打乱排序

    易语言文本数组随机打乱排序源码,文本数组随机打乱排序,交换数据_ASM变量交变量,交换数据_ASM变量数组交变量数组,加,减,依文本类型排序,文本冒泡排序,按文本长度排序,每字分割_到数组,取文本第一个字,反转数组,打乱...

    C#随机数,C#数组的排序,反转

    接下来,我们讨论C#中的数组排序。C#提供了Array类的Sort方法,可以对一维数组进行升序排序。例如,你有一个整数数组,可以这样排序: ```csharp int[] numbers = { 5, 2, 9, 1, 7 }; Array.Sort(numbers); ``` 这...

Global site tag (gtag.js) - Google Analytics