Java基础之冒泡排序和选择排序

排序(Sorting)

排序(sorting)是将一个数据元素(或记录)的任意序列,重新排列成一个按关键字有序的序列。

依据不同的原则对内部排序方法进行分类:

内部排序方法有:插入排序,交换排序,选择排序,归并排序和计数排序等五类。这里重点演示冒泡排序和选择排序。

冒泡排序(Bubble Sort):

原理:
  • 相邻元素两两比较,大的往后放;
    第一次完毕,最大值出现在最大索引处。
规则:
  • 1.每一次比较完毕后,下一次比较的时候就会减少一个元素的比较;
  • 2.第一次比较,有0个元素不比;
    第二次比较,有1个元素不比;
    第三次比较,有2个元素不比;
  • 3.总共需要比较数组长度-1次。
代码

以下代码你可以看到每一次排完序的结果。(只需要在main()方法中调用即可)

//冒泡排序
public static void buffleSort(int[] arr) {
	for (int i = 0; i < arr.length - 1; i++) {
		System.out.println("第" + (i+1) + "次排序后:");
		for (int x = 0; x < arr.length - 1 - i; x++) {
			if (arr[x] > arr[x + 1]) {
				int temp = arr[x];
				arr[x] = arr[x + 1];
				arr[x + 1] = temp;
			}
		}
		PrintArray(arr);
	}
}
// 遍历功能
public static void PrintArray(int[] arr) {
	System.out.print("[");
	for (int x = 0; x < arr.length; x++) {
		if (x == arr.length - 1) {
			System.out.print(arr[x]);
		} else {
			System.out.print(arr[x] + ",");
		}
	}
System.out.println("]");

选择排序(Selection Sort):

原理:
  • 从0索引开始,依次和后面元素比较,小的往前放;
    第一次完毕,最小值出现在了最小索引处;
    其他的同理即可以得到一个排好序的数组。
规则:
  • 1.第一次是从0索引开始和其他的进行比较
    第二次是从1索引开始和其他的进行比较
  • 2.最后一次是数组长度-2的元素和数组长度-1的元素比较
代码

以下代码你可以看到每一次排完序的结果。(只需要在main()方法中调用即可)

// 选择排序
public static void Choosesort(int[] arr) {
	for (int i = 0; i < arr.length - 1; i++) {
		System.out.print("第" + (i + 1) + "排序结果:");
		for (int j = i + 1; j < arr.length; j++) {
			if (arr[i] > arr[j]) {
				int temp = arr[j];
				arr[j] = arr[i];
				arr[i] = temp;
			}
		}
		PrintArray(arr);
	}
}
// 遍历数组
public static void PrintArray(int[] arr) {
	System.out.print("[");
	for (int x = 0; x < arr.length; x++) {
		if (x == arr.length - 1) {
			System.out.print(arr[x]);
		} else {
			System.out.print(arr[x] + ",");
		}
	}
	System.out.print("]");
	System.out.println();
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值