22-3-14Java桶排序

本文介绍了桶排序算法的简单实现,通过创建一个数组来记录每个数值出现的次数,从而实现排序。同时,展示了使用递归解决指数运算问题的方法,重点在于当指数为0、1或-1时的边界条件处理,以及如何将数值分解为更小的乘积进行计算。
摘要由CSDN通过智能技术生成

每日知识点-桶排序

桶排序的简单实现
思路:创建一个数组,用来记录每个数值的个数,数组的下标表示值,数组的值代表该下标的值出现的次数。空间复杂度为O(M+N),可以用于知道值的范围且范围较小的计算。

import java.util.Scanner;

public class Main{
	public static void main(String[] args) {
		int [] arr = {0,0,0,0,0,0,0,0,0,0,0};
		Scanner sc = new Scanner(System.in);
		for(int i=0;i<=10;i++) {
			int t = sc.nextInt();
			arr[t]++;
		}
		for(int i=0;i<=10;i++) {
			for(int j=0;j<arr[i];j++) {
				System.out.println(i);
			}
		}
	}
}

每日一题
思路:评论区大佬思路。每次调用myPow先判断是否为0,1,-1。这是递归结束的条件。最后三行代码是将数值编程更小数值的乘积。例如:如果数值n是奇数,则分成两个n/2和一个1,意思是x的n/2次幂乘x的n/2次幂乘x的1次幂。

class Solution {
    public double myPow(double x, int n) {
        if(n == 0)return 1;
        if(n == 1)return x;
        if(n == -1)return 1/x;
        double half = myPow(x,n/2);
        double mod = myPow(x,n%2);
        return half*half*mod;
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值