- package day01;
- public class Maopao {
- /*
- * 在和同学交流过程中,发现很多同学将两数交换经常混淆
- * 自己想了一个方法容易理解两数交换:白桶,汽油桶,柴油桶交换
- * 供大家学习分享
- */
- public static void main(String[] args) {
- int[] nums = { 10, 7, 8, 4, 3, 9, 2, 18 };
- sort2(nums);
- }
- /*
- * 升序排序
- */
- public static void sort(int[] nums) {
- int n = 0;// 白桶
- // 需要nums.length - 1次排序
- 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]) {
- n = nums[j];// 汽油给白桶,汽油桶为空
- nums[j] = nums[j + 1];// 柴油倒入汽油桶,柴油桶为空
- nums[j + 1] = n;// 白桶中的汽油倒入柴油桶
- }
- }
- }
- for (int i = 0; i < nums.length; i++) {
- System.out.print(nums[i] + "\t");
- }
- }
- /*
- * 降序
- */
- public static void sort2(int[] nums) {
- int t = 0;// 白桶
- for (int i = 0; i < nums.length; i++) {
- //第一次从最后一个数开始比较,将最大的数字放到第一个数的位置,排序好的数将不再参与排序
- for (int j = nums.length - 1; j > i; j--) {
-
- if (nums[j] > nums[j - 1]) {
- t = nums[j];// 汽油倒入白桶,汽油桶为空
- nums[j] = nums[j - 1];// 柴油倒入汽油桶,柴油桶为空
- nums[j - 1] = t;// 白桶中的汽油倒入柴油桶
- }
- }
- }
- for (int i = 0; i < nums.length; i++) {
- System.out.print(nums[i] + "\t");
- }
- }
- }
复制代码
|