Java基础之数组的排序

数组的遍历
在学习数组的排序之前,我们先来了解一下数组的遍历。
怎么打印数组呢?
大家可能会有疑问,数组不也是变量的一种吗,那么直接打印就好了呀

public class Text{
	public static void main(String[] args){
		int []nums = new int[]{12345};
		System.out.println(nums);
	}
}

这样就按照我们的想法,像打印变量一样把数组给打印出来。
在这里插入图片描述
大家发现,输出结果是一段不认识的字符串
并不似我们想象的1,2,3,4,5
为什么呢,因为数组是引用数据类型,存储的是地址,而这一串字符就是该数组在内存中开辟的空间的地址。
那我们要怎么打印数组呢,这时我们想到了循环。

public class Text{
	public static void main(String[] args){
		int []nums = new int[]{1,2,3,4,5};
		for(int i=0;i<nums.length;i++){
			System.out.print(nums[i]+" ");
		}
	}
}

这就是我们所说的,数组的遍历。
数组的遍历还有一种形式,也是使用for循环,但是这种格式只能用与数组的遍历。

public class Text{
	public static void main(String[] args){
		int []nums = new int[]{1,2,3,4,5};
		for(int num:nums){
			System.out.print(num+" ");
		}
	}
}

两个数的交换
在代码里两个数怎么交换他们的值呢?肯定不能说你给我,我给你对吧,这样就造成了数据的覆盖,没有办法达到我们要的效果,所以我们就需要引用第三个值

int a1 = 10;
int a2 = 6;
int b = a1;
a1 = a2;
a2 = b;

数组的排序

讲到这,才到了我们主角,排序
数组只是一组相同数据类型的数据的集合,它并不负责对数组进行排序,所以排序是需要我们手动来进行的。
今天我们来给大家讲讲两种排序:
1.选择排序
举一个升序排列的例子
选择排序就是先将第一个数,与后面的每一个数进行比交,如果第一个数比后面的数大,那么他们俩交换位置,继续进行排序。直到这一波排序完了。换第二个数比较,以此类推
通俗的说就是,先选出第一个最小的数,在选出第二个最小的数,以此类推
上代码:

//选择排序
	public static int[] xuanZe(int[] nums){
		for(int i=0;i<nums.length;i++){
			for(int j=i+1;j<nums.length;j++){
				if(nums[i]>nums[j]){
					int num = nums[i];
					nums[i] = nums[j];
					nums[j] = num;
				}
			}
		}
		return nums;
	}

2.冒泡排序
同样,举一个升序的例子:
冒泡排序呢,是先第一个数和第二个数排序,如果第一个数比第二个数大,交换位置,然后第二个数和第三个数进行比较,同理以此类推。
先进行第一轮排序后,是不是找出了数组的最大值,并把最大值放到了最后。
然后进行第二轮排序,找出第二大的值,放到后面,以此类推
所以通俗的说:冒泡排序就是先找出最大的数,在找出第二打的数以此类推
上代码:

//冒泡排序
	public static int[] maoPao(int[] nums){
		for(int j=0;j<nums.length-1;j++){
			for(int i=0;i<nums.length-j-1;i++){
				if(nums[i]>nums[i+1]){
					int num = nums[i];
					nums[i] = nums[i+1];
					nums[i+1] = num;
				}
			}
		}
		return nums;
	}

选择排序是先选出第一个值,从前往后选,冒泡排序是先选出最后的一个值,从后往前选

调用方法进行排序
没错,刚刚说了那么多,都是在扯犊子,真正写排序的话,根本不需要这么麻烦,在jdk中,java已经为我们封装了排序的方法,我们只需要调用就好了。

import java.util.Arrays;
class Demo{
	public static void main(String[] args){
		int[] nums = {12,87,11,1,4,3,98,16,71};
		Arrays.sort(nums);
		for(int i:nums){
			System.out.println(i);
		}
	}
}

只要使用Arrays.sort(nums);一行代码就完事了,惊不惊喜?意不意外?

猜你喜欢

转载自blog.csdn.net/qq_43336579/article/details/107798382
今日推荐