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

本文详细介绍了数组的基本概念,包括数组的创建、复制、排序等关键操作。通过实例演示了三种排序算法:选择排序、冒泡排序和插入排序,帮助读者深入理解数组的使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

数组简介:
数组是用来存储数据的集合,但是,通常我们会把数组看作一个存储具有相同类型 的变量集合会更有用。无须声明单个变量,例如: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]+" ");
        }
    }
}
### 找最小值及索引位置 对于在一维数组中寻找最小值及其对应的下标,可以遍历整个数组来实现这一目标。通过比较当前元素与已知的最小值来进行更新操作。 ```csharp public static void FindMinValueAndIndex(int[] array, out int minValue, out int minIndex) { if (array.Length == 0) { throw new ArgumentException("The input array cannot be empty."); } minValue = array[0]; minIndex = 0; for (int i = 1; i < array.Length; i++) { if (array[i] < minValue) { minValue = array[i]; minIndex = i; } } } ``` 这段代码定义了一个名为 `FindMinValueAndIndex` 的静态方法,该方法接收一个整型的一维数组作为参数,并返回两个输出参数——最小值 (`minValue`) 和其所在的索引位置 (`minIndex`) [^1]。 ### 对一维数组排序方法 针对一维数组排序需求,存在多种经典算法可以选择实施,比如选择排序法、冒泡排序法以及更高效的快速排序法等。这里提供一种简单易懂的选择排序法的具体实现: #### 使用选择排序法对一维数组进行升序排列 ```csharp public static void SelectionSortAscending(int[] array) { for (int i = 0; i < array.Length - 1; i++) { int minIndex = i; for (int j = i + 1; j < array.Length; j++) { if (array[j] < array[minIndex]) minIndex = j; } // Swap the found minimum element with the first unsorted element. int temp = array[minIndex]; array[minIndex] = array[i]; array[i] = temp; } } ``` 此段代码实现了选择排序的核心逻辑:每次从未排序部分选取最小的一个放到已经有序序列的末尾,直到所有元素都被处理完毕为止 。 另外,在 C# 中还可以利用内置函数 Array.Sort() 来简化上述过程,这通常会带来更好的性能表现 [^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值