桶排序 Bucket_Sort

本文介绍了桶排序算法,通过将数字分配到多个桶中并分别排序,实现整体的排序。示例代码展示了如何在Java中实现桶排序,并强调了学习算法的重要性。算法是解决问题的预设方案,能够帮助我们理解和运用在日常生活中。文章提供了学习算法的步骤,并分享了作者的学习方法,提倡多次实践以提升技能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本次我以桶排序为例子,什么桶排序?我们可以设想有10个水桶,每个水桶的可以装一部分水。

     水量不能大,因为超出的装不了。同理,水桶也不能少,少了水没桶可以装。

 

以下是桶排序代码实现:

package Bucket_Sort_Demo;



import java.util.ArrayList;

import java.util.List;



/** 桶排序的过程注意,桶的整体大小设置和数量限制

* @Author:Allen

* @Date:5/20/2021 3:46 PM

*/

public class Bucket_Sort_Dmo5 {

public static void main(String[] args) {

int [] a = {1,5,9,11,15,18,21,22,28,32,31,38,42,46,49};//此处我们的数字不要超过50

List[] buckets = new ArrayList[5]; //我们一个桶内装的数字个数为5个

for(int i = 0; i < buckets.length; i++ ){ //逐个开辟桶长度个空间

buckets[i]=new ArrayList<Integer>();   

}

for (int j = 0 ; j < a.length ;j++ ){

int index = a[j]/10;   //分为10个桶

buckets[index].add(a[j]);  //为list类型的桶增加元素,下标是n多少就在第n个桶内添加元素

}

for (int i = 0 ; i < buckets.length;i++){

buckets[i].sort(null);   // 为每个桶进行排序

for (int j = 0 ; j<buckets[i].size(); j++){ //提取每个元素,每个桶长度的个数   

System.out.print(buckets[i].get(j)+" ");  //逐个打印

}

}

}

}


 

1.为什么需要学习算法?(个人理解,不代表正统理解)

       算法是被人设计好的解决方案。每种算法是具体情景下的产物,解决相应的实际问题。比如协同过滤,电商平台可以根据用户的行为,进行物品推荐。算法工程师通过各类参数,模型的训练,找到一个更优的方案。对于算法,我们一般人需要会识别也能用得上。比如说,抖音里面搜自己感兴趣的球星,一排相关的视频推荐。算法工程师有门槛,但是识别自己是否被算法了,有助于脱离自己活在他人的算法。

 

2.什么是算法?

        术语不罗列,简单说就是玩一个游戏,和你的战友(Computer)在规定的时间和空间里,获得游戏胜利。你自己设计规则,达到终点。

 

3.怎么学习算法?

         逻辑能力训练,有什么用?买菜算账都能和卖菜大妈一样快(也不一定,人家是专业的)。玩笑话之后,主要是对编程基本功的训练,任何行业都有基本功,好的逻辑思维能力能让你更出色罗列项目的关键和细节。 

 

我个人的训练方式:先查看基本原理,再罗列实现代码的关键步骤,最后用实例进行推导。第一轮,尝试写代码的过程中,会发现有不少未注意到的细节,可以先自行思考,再和Demo进行比对,写下要点。自己尝试捋代码逻辑。第二轮,书写的时候,思考哪些细节上可能出现的问题,与源代码比较。第三轮,一般可以健步如飞地顺下来书写。

以下是我码代码的过程:

 

总结:个人认为我们总想一遍过,写得流畅,往往很难学下去。多尝试,再不济5,6,7遍,总会更加熟练。一起加油,欢迎在评论区分享你的打怪升级心得。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值