当前位置: 代码迷 >> 综合 >> Java入门(四)(数组,简单排序算法)
  详细解决方案

Java入门(四)(数组,简单排序算法)

热度:24   发布时间:2024-01-28 06:18:22.0

在Java中数组有着举足轻重的作用,数组可以方便我们进行数据的存储和类似增删改查的各种操作,是我们的程序更加简洁和高效。

数组是一个变量 引用类型,存储相同数据类型的一组数据
数组基本要素  数组名  值  下标(索引)  类型

①数组的定义。

首先,我们在使用一个数组之前比须定义一个数组。数组的定义又如下几种方法。

紧接着,我们可以对我们已经定义好的数组进行初始化赋值,

{//声明int a[];String[] b;double[] c;//分配空间, 使用new关键字来分配空间,new关键字是java中优先级最高的a = new int[5];b = new String[6];c = new double[4];//赋值a[0]=1;a[1]=1;a[2]=1;for(int i =0;i<a.length;i++){a[i]=i;}//声明的同时分配空间char[] cha = new char[10];float f[] = {11.1f, 22.2f};//声明分配空间并赋值int[] d = new int[]{1, 2, 3};}

②对数组的使用最多的就是循环遍历数组,得到数组中的各个下标位置的值。

这里我们上一个小小的例子,来熟悉数组的使用

例:计算30位同学的平均分,同时打印每一个分数

这里我们使用随机数进行赋值,可以通过for循环对数组进行赋值

    public static void main(String[] args) {int a[] = new int[30];double sum = 0;double avg = 0;for (int i = 0; i < 30; i++) {a[i] = (int) (Math.random()*100);sum += a[i];}avg = sum / a.length;//遍历查看数组中每一个元素for (int i = 0; i < a.length; i++) {System.out.print(a[i] + " ");}System.out.println();System.out.println(sum);System.out.println(avg);}

 

        在了解完数组之后,我们就可以试着尝试对我们的多个数据进行操作,这里我们需要对多个数据进行排序。  这里作者尝试两种基本排序算法:插入排序和选择排序

(一)选择排序

         选择排序(Selection-sort)是一种简单直观的排序算法。它的工作原理:首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。

代码示例:

        int a[] = {1, 3, 2, 5, 8, 4};for (int i = 0; i < a.length - 1; i++) {for (int j = i; j < a.length; j++) {int min = a[i];if (a[i] > a[j]) {a[i] = a[j];a[j] = min;}}}System.out.println(Arrays.toString(a));

 

(二)插入排序

插排是另外一种简单的排序算法,它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。插入排序在实现上,通常采用in-place排序(即只需用到O(1)的额外空间的排序),因而在从后向前扫描过程中,需要反复把已排序元素逐步向后挪位,为最新元素提供插入空间。

代码示例:

    public static void main(String[] args) {/** 插入排序:从第二位开始,向前比较,进行插入* */int a[] = {1, 3, 2, 5, 8, 4};for (int i = 1; i < a.length; i++) {int tmp=a[i];boolean isInsert=false;for (int j = i-1; j >= 0; j--) {//如果遇到比自己大的,大的值后移if(tmp<a[j]){a[j+1]=a[j];}else {a[j+1]=tmp;isInsert=true;break;}//如果遇到比自己小的,就在后方插入//如果一直没插入,就插入在首位}if(!isInsert){a[0]=tmp;}}System.out.println(Arrays.toString(a));}

 

谢谢观看!!希望喜欢的朋友关注,点赞。作者会持续发布Java 0基础入门教程。