冒泡排序和选择排序以及Array排序法

import java.lang.reflect.Array;
import java.util.Arrays;

/**
 * 冒泡排序和选择排序
 * @author fish
 *
 */
public class SequenceDemo {
	public static void main(String[] args) {
		int[] nums = new int[10]; //定义一个数组的长度为10,冒泡排序法
		int[] nums2 = new int[10];//选择排序法
		int[] nums3 = new int[10]; //array排序
		for (int i = 0; i < nums.length; i++) {
			nums[i] = (int)(Math.random() * 50000); //通过random点,来给nums数组赋值,值为0-1000之间的数字
			nums2[i] = (int)(Math.random() * 1000);
			nums3[i] = (int)(Math.random() * 100 + 1);
			//nums2[i] = nums[i]; copy数组的值
		}
		for (int i = 0; i < nums.length - 1; i++) {//假设为10个长度,只需要比9次,因为不用跟自己比。执行9次下面的操作
			for (int j = 0; j < nums.length - i - 1; j++) {//因为每一次不管必大或者比小,下一次都比上一次少比一次执行
				//每一次比上一次少执行i-1次
				if(nums[j] > nums[j + 1]) {//因为上一次放到最上面的肯定是最小的,大于号是从小往大排,反之
				int temp = nums[j];//假如nums[j]的值小于nums[j + 1]
				nums[j] = nums[j + 1];//就把这两值的位置交换
				nums[j + 1] = temp;//这三句话就是把nums[j]的值跟nums[j + 1]进行交换
				}
			}
		}
		for (int i = 0; i < nums2.length; i++) {
			int min = nums2[i]; //假设nums的第i个值是最小值
			int minIndex = i;//元素下标,标记位置
			for (int j = i + 1; j < nums2.length; j++) {
				if(min > nums2[j]) { //假设这个最小值比nums[j]还大
					min = nums2[j];	// 那么就把这个这小值的称号给nums[j]
					minIndex = j;	//做元素下标,标记出这个最小值的位置然后跳出循环
				}
			}
			int temp = nums2[i];//既然nums2[i]不是最小值把nums2[minIndex]的值和nums2[i]交换
			nums2[i] = nums2[minIndex];//这三句是交换的过程
			nums2[minIndex] = temp;
		}
		
		
		Arrays.sort(nums3);//默认句式,这样是生序,下面是逆序排列
		/**逆序的话就是首位交换
		 * 例如现在有五个数字:12, 18, 20, 25, 30
		 * 逆序就是12和30交换,
		 * 当i = 0 的时候, 12和30交换变成 30, 18, 20, 35, 12
		 * 当i = 1的时候, num3[num3,length - i -1] = 3 就是35
		 * 18和35交换,当i = 2的时候, 20 和 20 交换,
		 * 当i = 3的时候大于num3.length / 2 ,循环停止。
		 */
		for (int i = 0; i < nums3.length / 2; i++) {
			int temp = nums3[i];
			nums3[i] = nums3[nums3.length - i - 1];
			nums3[nums3.length - i - 1] = temp;
		}

	
	
	
		System.out.println("排序后:");
		for (int i = 0; i < nums.length; i++) {
			System.out.print(nums[i] + "\t");
			if((i+1) % 5 == 0)
				System.out.println("\n");	
		}
		System.out.println("排序后:");
		for (int i = 0; i < nums2.length; i++) {
			System.out.print(nums2[i] + "\t");
			if((i+1) % 5 == 0)
				System.out.println("\n");
		}
		System.out.println("排序后:");
		for (int i = 0; i < nums3.length; i++) {
			System.out.print(nums3[i] + "\t");
			if((i+1) % 5 == 0)
				System.out.println("\n");
		}
	}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值