热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

ALDS1_6_A:桶排序算法详解与实现

题目链接:http:judge.u-aizu.ac.jponlinejudgedescription.jsp?idALDS1_6_A输入:一个数组输

题目链接:http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=ALDS1_6_A

输入:一个数组

输出:计数排序后的数组

思路:新开一个数组,输入数组的元素的值作为新数组的下标志,输入数组相同元素出现过的次数作为新数组的value

排序时,把新数组C递加,C[n+1]=C[n+1]+C[n];得到的C[n]里面存的是排序后,该元素的位置。需要注意的是,相同的元素会获得相同的位置,需要进行修正。

代码如下:

#include
#include
#include
using namespace std;
int A[2000010],B[2000010];
int C[100010];int main (){int n;cin>>n;for(int i=0;i<100000;i++) C[i]=0;for(int i=0;i>A[i+1];C[A[i+1]]++;}for(int i=1;i<100000;i++) C[i]+=C[i-1];for(int i=1;i<=n;i++){B[C[A[i]]]=A[i];C[A[i]]--;}for(int i =1;i<=n;i++) cout<}

按照自己之前的理解,也可以直接按下面这样写:

在获取C[n]之后,不把新数组C递加,直接从小到大遍历,按次数输出,代码如下:

#include
#include
#include
using namespace std;
int A[2000010];
int C[100010];int main (){int n;cin>>n;for(int i=0;i<100000;i++) C[i]=0;for(int i=0;i>A[i];C[A[i]]++;}int flag=0;for(int i=0;i<100000;i++){for(int j=C[i];j>0;j--) if(flag) {cout<<" "<}

错点:

1.修正的过程这样完成

B[C[A[i]]]=A[i];
C[A[i]]--;

推荐阅读
  • 本题要求在一组数中反复取出两个数相加,并将结果放回数组中,最终求出最小的总加法代价。这是一个经典的哈夫曼编码问题,利用贪心算法可以有效地解决。 ... [详细]
  • 在高并发需求的C++项目中,我们最初选择了JsonCpp进行JSON解析和序列化。然而,在处理大数据量时,JsonCpp频繁抛出异常,尤其是在多线程环境下问题更为突出。通过分析发现,旧版本的JsonCpp存在多线程安全性和性能瓶颈。经过评估,我们最终选择了RapidJSON作为替代方案,并实现了显著的性能提升。 ... [详细]
  • 主调|大侠_重温C++ ... [详细]
  • 本文介绍如何从字符串中移除大写、小写、特殊、数字和非数字字符,并提供了多种编程语言的实现示例。 ... [详细]
  • 探讨 HDU 1536 题目,即 S-Nim 游戏的博弈策略。通过 SG 函数分析游戏胜负的关键,并介绍如何编程实现解决方案。 ... [详细]
  • 深入解析Spring启动过程
    本文详细介绍了Spring框架的启动流程,帮助开发者理解其内部机制。通过具体示例和代码片段,解释了Bean定义、工厂类、读取器以及条件评估等关键概念,使读者能够更全面地掌握Spring的初始化过程。 ... [详细]
  • 本文介绍了一种基于选择排序思想的高效排序方法——堆排序。通过使用堆数据结构,堆排序能够在每次查找最大元素时显著提高效率。文章详细描述了堆排序的工作原理,并提供了完整的C语言代码实现。 ... [详细]
  • 本文探讨了符号三角形问题,该问题涉及由相同数量的“+”和“-”符号组成的三角形。通过递归回溯法,可以有效地搜索并计算符合条件的符号三角形的数量。 ... [详细]
  • 使用JS、HTML5和C3创建自定义弹出窗口
    本文介绍如何结合JavaScript、HTML5和C3.js来实现一个功能丰富的自定义弹出窗口。通过具体的代码示例,详细讲解了实现过程中的关键步骤和技术要点。 ... [详细]
  • ListView简单使用
    先上效果:主要实现了Listview的绑定和点击事件。项目资源结构如下:先创建一个动物类,用来装载数据:Animal类如下:packagecom.example.simplelis ... [详细]
  • 深入解析Java虚拟机(JVM)架构与原理
    本文旨在为读者提供对Java虚拟机(JVM)的全面理解,涵盖其主要组成部分、工作原理及其在不同平台上的实现。通过详细探讨JVM的结构和内部机制,帮助开发者更好地掌握Java编程的核心技术。 ... [详细]
  • CSS高级技巧:动态高亮当前页面导航
    本文介绍了如何使用CSS实现网站导航栏中当前页面的高亮显示,提升用户体验。通过为每个页面的body元素添加特定ID,并结合导航项的类名,可以轻松实现这一功能。 ... [详细]
  • 本章详细介绍SP框架中的数据操作方法,包括数据查找、记录查询、新增、删除、更新、计数及字段增减等核心功能。通过具体示例和详细解析,帮助开发者更好地理解和使用这些方法。 ... [详细]
  • 由二叉树到贪心算法
    二叉树很重要树是数据结构中的重中之重,尤其以各类二叉树为学习的难点。单就面试而言,在 ... [详细]
  • 本文探讨了在 SQL Server 中使用 JDBC 插入数据时遇到的问题。通过详细分析代码和数据库配置,提供了解决方案并解释了潜在的原因。 ... [详细]
author-avatar
徐成奕_98743
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有