一维数组简介及三种排序方法

数组简介:
数组是用来存储数据的集合,但是,通常我们会把数组看作一个存储具有相同类型 的变量集合会更有用。无须声明单个变量,例如:number0, number1,…,number99, 只要声明一个数组变量 numbers,并且用 numbers[0], numbers[1],…, numbers[99]来表示单个变量。
数组创建
声明一个数组变量、创建数组、然后将数组引用赋值给变量这三个步驟可以合并在一条语句里。
例如:
(1)int[ ] arr=new arr[100];
元素类型[]数组名 =new 元素类型[ 数组大小];
(2)int[ ] arr=new[]{1,2,3};
数据类型[] 数组名=new 数据类型[]{元素1,元素2,…};
(3)int[ ] arr={1,2,3};
数据类型[] 数组名={元素1,元素2,…};
注意:创建一个指定长度的数组,里面元素是默认的,默认值为0,数组长度一旦确定,就不可改变。
若想改变数组长度就要对其进行扩容,方法如下:
在这里插入图片描述
(代码有注释就不介绍扩容过程)

数组的复制:要将一个数组中的内容复制到另外一个中,你需要将数组的每个元素复制到另外一个数组中。
例如:list1=list2;
在这里插入图片描述
事实上该语句并不能将list1引用的数组内容复制给 list2, 而只是将list1的引用值复制给了 list2。在这条语句之后,list1和list2 都指向同一个数组,list2 原先所 引用的数组不能再引用,它就变成了垃圾,会被 Java 虚拟机自动收回。
数组排序:
1、选择排序:`

class pxXuanZe{
    public static void main(String[] args){
        int[] arr={2,3,5,6,1,4};                        //对该数组进行排序
        for(int i=0;i<arr.length-1;i++){                //遍历数组角标为0到最大长度减一的数          
            for(int j=i+1;j<arr.length;j++){	        //遍历角标i后面的数
                if(arr[i]>arr[j]){						//比较大小,如果前者比后者大则交换两个角标对应的值
                    int temp=arr[i];
                    arr[i]=arr[j];
                    arr[j]=temp;
                }
            }
        }
        for(int i=0;i<arr.length;i++){
            System.out.print(arr[i]+" ");               //打印排序后的值
        }
    }
}

2、冒泡排序
简单来说,冒泡排序就是重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。

class pxMaoPao{
    public static void main(String[] args){
        int[] arr={2,1,5,3,4,6};                        //对该数组进行排序
        for(int i=0;i<arr.length-1;i++){				//遍历数组角标为0到最大长度减一的数
            for(int j=0;j<arr.length-i-1;j++){			//遍历的数每次循环减少一个
                if(arr[j]<arr[j+1]){					//比较大小 大的在后面
                    int temp=arr[j];
                    arr[j]=arr[j+1];
                    arr[j+1]=temp;
                }
            }
        }
        for(int i=0;i<arr.length;i++){
            System.out.print(arr[i]+" ");				//打印
        }
    }
}

3、插入排序

class pxChaRu{
    public static void main(String[] args){		
        int[] arr={1,5,4,3,2,6};
        for(int i=1;i<arr.length;i++){			//遍历i从1到最大长度-1
            int e=arr[i];						//创建e等于角标为i的数
            int j=i-1;							//j表示角标
            while(j>=0&&arr[j]>e){				//当角标j大于等于0且j角标的数字大于大于i角标的数字
                arr[j+1]=arr[j];				//交换j和j+1角标对于 的数字(即将所有大于该数字的数后移)
                j--;
            }
            arr[j+1]=e;      					//循环结束后将e的值给角标j+1位置
        }
        for(int i=0;i<arr.length;i++){
            System.out.print(arr[i]+" ");
        }
    }
}
  • 4
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值