Java数组——数组的排序

数组的排序

冒泡排序和选择排序,也可以使用数组的API

Arrays.sort() 对数组的排序(从小到大)

选择排序:

就是用数组的第一个元素和其余的每个元素进行比较,比第一个元素小的就和第一个元素互换位置,

这样就每次循环就可以得出每次最小的元素,然后下一次将不会判断已经拍好序的序,因为里层的循环是等于外层循环的值的

外层的循环就是确定从数组那个下标位置上的数进行比较例如:

	private static void SelectSort(int[] arr) {
/*		 利用选择排序对数组进行排序
		 这里写成length-1和length是一样的,因为下面j=i+1,是刚好可以判断到最后一个数的
		 如果写写length的话,当i等于数组中的最后一个数的下标时候,里层的for循环是不会执行的
		 因为条件不成立,所以这里写成length-1和length是一样的*/
		for (int i = 0; i < arr.length - 1; i++) {
			// 这里写成j=i+1是因为当选出左边的时候,就不在对左边的数进行判断
			for (int j = i + 1; j < arr.length; j++) {
				// 如果相邻的两个数,左边的比右边的大,就交换他两的位置,把较大数移动到最后去
				if (arr[i] > arr[j]) {
					// 利用a^b^b=b和a^b^a=b的特点来交换两个数的值
					arr[i] = arr[i] ^ arr[j];
					arr[j] = arr[i] ^ arr[j];
					arr[i] = arr[i] ^ arr[j];
				}
			}
		}

		// 打印
		System.out.println("对数组进行选冒泡序后的顺序是:" + Arrays.toString(arr));
	}

       冒泡排序

就是数组中两个相邻的元素进行比较,将较大的移动右边,小的移动到左边,这样一直比较,直到比较到最后一个元素,

就可以把最大的元素移动到右边去,然后由于外层的i每次都是自减,所以每次都可以不进行最后i个数比较,因为i个数是

已经拍好序的

	private static void BubleSort(int[] arr) {
		// 利用冒泡排序对数组进行排序
		// 让i的值等于数组的长度减一,然后每次自身都减一,这样就可以不进行最后已经排好序的i个数
		for (int i = arr.length - 1; i > 0; i--) {
			// 让j小于i,每次都不去判断已经排好序的数,增加效率
			for (int j = 0; j < i; j++) {

				// 如果相邻的两个数,左边的比右边的大,就交换他两的位置,把大数移动到最后去
				if (arr[j] > arr[j + 1]) {
					// 利用a^b^b=b和a^b^a=b的特点来交换两个数的值
					arr[j] = arr[j] ^ arr[j + 1];
					arr[j + 1] = arr[j] ^ arr[j + 1];
					arr[j] = arr[j] ^ arr[j + 1];
				}
			}
		}
		
		// 打印
		System.out.println("对数组进行选择排序后的顺序是:" + Arrays.toString(arr));
	}

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值