算法 (递归排序 冒泡排序 水桶排序)

1.递归排序

public class Java04 {
    public static void main(String[] args) {
        // n! 6!=1*2*3*4*5*6=6*5!
        int n = 12;
        int result = diGui(n);
        System.out.println(n + "!=" + result);
    }

    /**
     * 1.自己调用自己 2.一定要有退出条件(不调自己的地方)
     */
    private static int diGui(int i) {
        if (i == 1) {
            return 1;
        }

        return i * diGui(i - 1);
    }
}

 

2.冒泡排序
public class Java05 {
 public static void main(String[] args) {
  int[] nums = { 10, 30, 50, 20, 40, 60, 70, 80, 90 };

  System.out.println(Arrays.toString(nums));

  bubbleSort(nums);

  System.out.println(Arrays.toString(nums));
 }

 private static void bubbleSort(int[] nums) {
  // 1.把第1个数拿出来,和后面的所有数比较,比后面的大就叫换位置
  // 2.把第2个数拿出来,和后面的所有数比较,比后面的大就叫换位置
  // 3.把第n-1个数拿出来,和后面的所有数比较,比后面的大就叫换位置
  // Arrays.sort(nums);

  for (int i = 0; i < nums.length - 1; i++) {

   for (int j = i + 1; j < nums.length; j++) {

    if (nums[i] > nums[j]) {

     int temp = nums[i];
     nums[i] = nums[j];
     nums[j] = temp;
    }
   }
  }
 }

 private static void printNums(int[] nums) {
  for (int num : nums) {
   System.out.print(num + " ");
  }
  System.out.println();
 }
}

3.水桶排序

public static void main(String[] args) {
  // 水桶排序
  // 假设所有的数字在[0-100)之间
  int[] nums = { 2, 5, 12, 5, 7, 8, 4, 80 };
  // 建水桶
  int[] bucket = new int[100];
  for (int num : nums) {
   bucket[num]++;
  }
  // 装回去
  int index = 0;
  for (int i = 0; i < bucket.length; i++) {
   for (int j = 0; j < bucket[i]; j++) {
    nums[index++] = i;
   }
  }
  // 打印
  System.out.println(Arrays.toString(nums));
 }

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值