首页 > 编程语言 > 详细

数组排序

时间:2021-07-08 18:20:59      阅读:29      评论:0      收藏:0      [点我收藏+]

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));
	}
}

数组排序

原文:https://www.cnblogs.com/hourglas/p/14987039.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!