数组排序

1.冒泡排序

两两相邻比较,遇到条件成立(大于或者小于)就交换位置
比较的轮数是长度-1,外层循环控制比较的轮数
每一轮比较的次数,最多的一次是长度-1,依次递减,内层循环控制比较的次数

import java.util.Arrays;
public class Test1 {
	public static void main(String[] args) {
		int a  = 10;
		int b = 20;
		int c = a;
		a = b;
		b = c;
		int [] nums = {20,1,55,784,10,233,65};
		for(int i = 0;i < nums.length - 1;i++) {
			for(int j = 0;j < nums.length - 1 - i;j++) {
				if(nums[j] < nums[j + 1]) {
					int temp = nums[j];
					nums[j] = nums[j + 1];
					nums[j + 1] = temp;
				}
			}
		}
		System.out.println(Arrays.toString(nums));
	}
}

2.选择排序

比较方式:使用一个元素和其他元素比较,遇到需要交换的元素,先不交换,等到一轮比较完以后,交换一次位置
比较的次数与冒泡排序是一样的,但交换的次数大大减少了
长度-1的元素都将充当一遍比较的数A
从第二个元素开始,都将充当一遍比较的数B
外层循环,比较的是数A;内层循环,比较的是数B

import java.util.Arrays;

public class Test1 {
	public static void main(String[] args) {
		int [] nums = {20,1,55,784,10,233,65};
		for(int i = 0;i < nums.length - 1;i++) {
			int minIndex = i;
			for(int j = i + 1;j < nums.length;j++) {
				if(nums[minIndex] > nums[j]) {
					minIndex = j;
				}
			}
			
			if(minIndex != i) {
				int temp = nums[minIndex];
				nums[minIndex] = nums[i];
				nums[i] = temp;
			}
		}
		System.out.println(Arrays.toString(nums));
		
	}
}

3.JDK自带的排序

Arrays.sort(数组名) 只能升序

import java.util.Arrays;

public class Test1 {
	public static void main(String[] args) {
		int [] nums = {20,1,55,784,10,233,65};
		Arrays.sort(nums); // 升序
		
		int [] newNums = new int[nums.length];  //降序排序,将升序后的数组元素进行颠倒
		for(int i = 0,j = nums.length - 1;i < nums.length;i++,j--) {
			newNums[i] = nums[j];
		}
		System.out.println(Arrays.toString(newNums));
		System.out.println(Arrays.toString(nums));
	}
}
posted @ 2021-07-24 14:09  码丁XIA  阅读(35)  评论(0)    收藏  举报