博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
桶排序
阅读量:7210 次
发布时间:2019-06-29

本文共 2322 字,大约阅读时间需要 7 分钟。

1 package blog; 2  3 import java.util.Scanner; 4  5 /** 6  * 个人理解: 1、桶排序是稳定的 2、桶排序是非常快的 3、桶排序是一种比较耗空间的算法,因为它是建立在已知数据上来 确定桶的个数。 7  *  8  * @author 霍礼平 2017年8月10日 9  *10  */11 public class 桶排序 {12 13     /**14      * 如果一组确定的数据中最大的数是10,最小的数是015      */16     // 首先申请大小为11的数组17     static int barrel[] = new int[11];18 19     // 初始化20     public static void init() {21         // 初始化数组各个元素都为022         for (int i = 0; i <= 10; i++) {23             barrel[i] = 0;24         }25     }26 27     public static void method1() {28         System.out.print("第一种方式从小到大");29         // 依次判断barrel[0]~barrel[10]各个元素出现的次数,总共打印10个下标,0次不打印30         for (int i = 0; i < 10; i++) {31             for (int j = 1; j <= barrel[i]; j++) {32                 System.out.print(i + " ");33             }34         }35         System.out.println();36         System.out.print("从大到小");37         for (int i = 10; i>=0; i--) {38             for (int j = 1; j <= barrel[i]; j++) {39                 System.out.print(i + " ");40             }41         }42     }43 44     // 或者用这种方法,但是barrel[i]--会使每个桶内的元素个数降到0,既桶被清空45     public static void method2() {    46         System.out.print("第二种方式从小到大");47         // 依次判断barrel[0]~barrel[10]各个元素出现的次数,总共打印10个下标,0次不打印48         for (int i = 0; i < 10; i++) {49             for (int j = 1; j <= barrel[i]; barrel[i]--) {50                 System.out.print(i + " ");51             }52         }53     }54 55     public static void main(String[] args) {56         while (true) {57             init();58             // 读入5个整数,最大数不能超过1059             Scanner a = new Scanner(System.in);60             System.out.println();61             System.out.println("请输入要排序的个数,最大数不能超过10");62             int sum = a.nextInt();63             System.out.println("这"+sum+"个数一次为:");64             for (int i = 0; i < sum; i++) {65                 int input = a.nextInt();66                 if(input>10){67                     System.out.println("最大数不能超过10");68                     break;69                 }70                 // 核心,输入的数和对应的数组下标一致时,对应的数组加一,出现几次就加几次71                 barrel[input]++;72             }73             method1();74             System.out.println();75             method2();76         77         }78     }79 80 }

运行结果:

 总结:冒泡排序虽然快,但是非常浪费空间,而且只能排序整数

转载于:https://www.cnblogs.com/huohuohuo/p/7343834.html

你可能感兴趣的文章
Ubuntu下使用UFW配置防火墙(简化iptables的操作)
查看>>
OpenStack快速入门-queens版本
查看>>
大数据驱动智能制造 物联网引爆工业革命商机
查看>>
一个比较完善的购物车类
查看>>
「镁客·请讲」Visense Studio冯樑杰:游戏基因的VR视频,最好的表现是真人实拍交互...
查看>>
让人欲罢不能的量子学
查看>>
美团在Redis上踩过的一些坑-2.bgrewriteaof问题
查看>>
C# StreamReader.ReadLine统计行数的问题
查看>>
异常测试实践与梳理
查看>>
多者异也
查看>>
tf:'hello tensorflow'
查看>>
RedisConf2018记录--Day 1 sessions
查看>>
CentOS的el5, el6, el7代表什么
查看>>
柏林纪行(中):Node.js Collaboration Summit
查看>>
IT网络通信大变革时代来临 2016中国极客大奖为您找到风向标
查看>>
如何下载WDK
查看>>
硬纪元干货|镁客网萨向东:推动硬科技产业落地,助力传统产业升
查看>>
SSDT&Shadow Hook的实现,完整代码。可编译
查看>>
Spring4-自动装配Beans-通过注解@Autowired在构造方法上
查看>>
MapReduce编程(四) 求均值
查看>>