Java 数组的排序

1、Arrays.sort()方法:最简单且最常用的排序方法。

int[] arr = {45,34,59,55};
Arrays.sort(arr);	//调用方法排序即可

注意:sort方法具有局限性,只能升序排列数组中的元素。

2、冒泡排序:(记住三点)

  • 比较轮数:数组长度-1轮
  • 冒泡出去的数以后就不参与比较了
  • 每次比较的数都是和下一个数进行比较

冒泡排序示意图:
在这里插入图片描述

int a[] = {64,1,28,37};
for(int i = 0;i < a.length-1;i++){
	for(int j = 0;j<a.length-i;j++){
		if(a[j]>a[j+1]){
			int temp = a[j];
			a[j] = a[j+1];
			a[j+1] = temp;
		}
	}
}

输出a数组的值:1,28,37,64

如果想要降序排列,我们修改嵌套循环中的判断即可。

3、直接选择排序:(比冒泡排序快)

  • 轮数:数组长度-1轮
  • 在数组中选出最大或最小的数,然后和最后位置元素的索引进行调换
  • 每一轮调换出去的元素就不参与比较了

选择排序示意图:
在这里插入图片描述

int[] a = {64,28,1,17};
int index;
for(int i = 0;i < a.length-1;i++){
	index = 0;
	for(int j = 1;j <= a.length-1-i;j++){
		if(a[index]<a[j]){
			index = j;
		}
	}
	int tmp = a[a.length-1-i];
	a[a.length-1-i] = a[index];
	a[index] = tmp;
}
for(int arr:a) {
	System.out.print(arr + ",");
}

输出a数组的值:1,17,28,64

4、总结:

  • 排序的轮数决定嵌套的外层循环次数。
  • 每轮比较的次数决定里层循环次数。
  • 冒泡排序是从数组第一个数开始和下一个数比较,然后进行交换,每轮选出当前数组未比较数中最大/小的数,然后冒泡出去,下一轮将不再进行比较。
  • 选择排序是从数组下标为0的数和下一个数比较,比较出最大/小的数,再用该数和下一个数比较,以此类推直到选出当前数组未比较的数中最大/小的数和数组未比较的元素的最后一个元素进行交换,当前轮交换到最后的元素下一轮将不进行比较。
  • 如果想修改正序和倒序排列,那么我们只修改内层循环中的判断即可(选取当前元素最大/小的元素)。

猜你喜欢

转载自blog.csdn.net/weixin_44296929/article/details/107085746