去重整数并排序(两种方法)

牛客题:https://www.nowcoder.com/practice/f59b914172b94c69a2b29ad0a1d9b1a7

描述

给定一个整数序列,KiKi想把其中的重复的整数去掉,并将去重后的序列从小到大排序输出。

输入描述:

第一行,输入一个整数n,表示序列有n个整数。

第二行输入n个整数(每个整数大于等于1,小于等于1000),整数之间用空格分隔。

输出描述:

去重并且从小到大排列的整数序列,整数之间用空格分隔。

输入:

6
5 3 3 4 2 2

输出:

2 3 4 5

方法一:暴力求解法

先将整数排序,再去重。

可以采用很多种排序方法,本次我们采用希尔排序——详见我的这篇博客http://t.csdn.cn/zbA2s

int main()
{
	int n = 0;
	scanf("%d", &n);
	int arr[1000] = { 0 };
	for (int i = 0; i < n; i++)
	{
		scanf("%d", &arr[i]);
	}

    //排序--希尔排序
	int gap = n;
	while (gap > 1)
	{
		gap = gap / 2;
		for (int i = 0; i < n-gap; i++)
		{
			int end = i;
			int tmp = arr[end + gap];
			while (end >= 0)
			{
				if (tmp < arr[end])
				{
					arr[end + gap] = arr[end];
					end = end - gap;
				}
				else
				{
					break;
				}
			}
			arr[end + gap] = tmp;
		}
	}


	//去重
	for (int i = 0; i < n-1; i++)
	{
		if (arr[i] == arr[i + 1])
		{
			int j = 0;
			for (j = i + 1; j < n - 1; j++)
			{
				arr[j] = arr[j + 1];
			}
			n--;
			i--;
		}
	}


    //输出
	for (int i = 0; i < n; i++)
	{
		printf("%d ", arr[i]);
	}
	return 0;
}

方法二:以空间换时间

创建一个数组,将每次录入的数字存放到数组对应的下标上,录入完成后,就相当于完成了去重和排序双重工作,直接将数组中不是0的元素打印出来就可以。

 完整代码:

//方法二:

int main()
{
	int n = 0;
	scanf("%d", &n);
	int arr[1001] = { 0 };
	int m = 0;
	for (int i = 0; i < n; i++)
	{
		scanf("%d", &m);
		arr[m] = m;
	}
	for (int i = 0; i <= 1000; i++)
	{
		if (arr[i] != 0)
		{
			printf("%d ", arr[i]);
		}
	}
	return 0;
}

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
一、本书的内容 目前,市面上有关计算机算法的书很多,有些叙述严谨但不全面,另外一些则是容量很大但不够严谨。本书将叙述的严谨性以及内容的深度和广度有机地结合了起来。第1版推出后,即在世界范围内受到了广泛的欢迎,被各高等院校用作多种课程的教材和业界的标准参考资料。它深入浅出地介绍了大量的算法及相关的数据结构,以及用于解决一些复杂计算问题的高级策略(如动态规划、贪心算法、平摊分析等),重点在于算法的分析和设计。对于每一个专题,作者都试图提供目前最新的研究成果及样例解答,并通过清晰的图示来说明算法的执行过程。. 本书是原书的第2版,在第1版的基础之上增加了一些新的内容,涉及算法的作用、概率分析和随机化算法、线性规划,以及对第1版中详尽的、几乎涉及到每一小节的修订。这些修订看似细微,实际上非常重要。书中引入了“循环不变式”,并贯穿始终地用来证明算法的正确性。在不改动数学和分析重点的前提下,作者将第1版中的许多数学基础知识从第一部分移到了附录中。 二、本书的特点 本书在进行算法分析的过程中,保持了很好的数学严谨性。书中的分析和设计可以被具有各种水平的读者所理解。相对来说,每一章都可以作为一个相对独立的单元来教授或学习。书中的算法以英语加伪代码的形式给出,只要有一点程序设计经验的人都能读懂,并可以用任何计算机语言(如C/C++和Java等)方便地实现。在书中,作者将算法的讨论集中在一些比较现代的例子上,它们来自分子生物学(如人类基因项目)、商业和工程等领域。每一小节通常以对相关历史素材的讨论结束,讨论了在每一算法领域的原创研究。 本书的特点可以概括为以下几个方面: 1.概念清晰,广度、深度兼顾。 本书收集了现代计算机常用的数据结构和算法,并作了系统而深入的介绍。对涉及的概念和背景知识都作了清晰的阐述,有关的定理给出了完整的证明。 2.“五个一”的描述方法。 本书以相当的深度介绍了许多常用的数据结构和有效的算法。编写上采用了“五个一”,即一章介绍一个算法、一种设计技术、一个应用领域和一个相关话题。.. 3.图文并茂,可读性强。 书中的算法均以通俗易懂的语言进行说明,并采用了大量插图来说明算法是如何工作的,易于理解。 4.算法的“伪代码”形式简明实用。 书中的算法均以非常简明的“伪代码”形式来设计,可以很容易地把它转化为计算机程序,直接应用。 注重算法设计的效率,对所有的算法进行了仔细、精确的运行时间分析,有利于进一步改进算法。 三、本书的用法 本书对内容进行了精心的设计和安排,尽可能考虑到所有水平的读者。即使是初学计算机算法的人,也可以在本书中找到所需的材料。 每一章都是独立的,读者只需将注意力集中到最感兴趣的章节阅读。 1.适合作为教材或教学参考书。 本书兼顾通用性与系统性,覆盖了许多方面的内容。本书不但阐述通俗、严谨,而且提供了大量练习和思考题。针对每一节的内容,都给出了数量和难度不等的练习题。练习题用于考察对基本内容的掌握程度,思考题有一定的难度,需进行精心的研究,有时还通过思考题介绍一些新的知识。 前言回到顶部↑本书提供了对当代计算机算法研究的一个全面、综合性的介绍。书中给出了多个算法,并对它们进行了较为深入的分析,使得这些算法的设计和分析易于被各个层次的读者所理解。力求在不牺牲分析的深度和数学严密性的前提下,给出深入浅出的说明。. 书中每一章都给出了一个算法、一种算法设计技术、一个应用领域或一个相关的主题。算法是用英语和一种“伪代码”来描述的,任何有一点程序设计经验的人都能看得懂。书中给出了230多幅图,说明各个算法的工作过程。我们强调将算法的效率作为一种设计标准,对书中的所有算法,都给出了关于其运行时间的详细分析。 本书主要供本科生和研究生的算法或数据结构课程使用。因为书中讨论了算法设计中的工程问题及其数学性质,因此,本书也可以供专业技术人员自学之用。 本书是第2版。在这个版本里,我们对全书进行了更新。所做的改动从新增了若干章,到个别语句的改写。 致使用本书的教师 本书的设计目标是全面、适用于多种用途。它可用于若干课程,从本科生的数据结构课程到研究生的算法课程。由于书中给出的内容比较多,只讲一学期一般讲不完,因此,教师们应该将本书看成是一种“缓存区”或“瑞典式自助餐”,从中挑选出能最好地支持自己希望教授的课程的内容。 教师们会发现,要围绕自己所需的各个章节来组织课程是比较容易的。书中的各章都是相对独立的,因此,你不必担心意想不到的或不必要的各章之间的依赖关系。每一章都是以节为单位,内容由易到难。如果将本书用于本科生的课程,可以选用每一章的前面几节内容;在研究生课程中,则可以完整地讲授每一章。 全书包含920多个练习题和140多个思考题。每一节结束时给出练习题,每一章结束时给出一些
Lerx 网站内容管理系统 v5.5 更新日志 1.修复了短信验证码发送时间间隔无效,可能引起连续恶意验证的问题。 2.来访IP记录,如果来源Reffer和当前地址相同,则不记录Reffer。 3.记录来访IP记录的总访问数。(注:若间隔6小时以上,则重新记录) 4.解决站点手机监控平台中url地址不自动断行引起的美观和左右滑摆问题。 5.增加QQ帐号互联登录方式 6.增加微博帐号互联登录方式 7.增加微信帐号互联登录方式 8.网站的手机监控端增加最新评论列表 9.修复评论不记录客户端IP的问题 10.完全启动后5秒执行首页及栏目的静态文件生成、更新。 11.更换富文本编辑器。 12.发布文章的同时可以上传附件。 13.美化网站自动地图(导航)页。 14.更新了IP地址库(纯真)。 Lerx 网站内容管理系统软件简介 Lerx 网站内容管理系统是一套开源免费的基于Java环境的,采用Spring 4和Hibernate 5 开发的各类门户网站内容管理。采用了低耦合式模块化设计。拥有版本更新自动提醒、智能网站模板市场、文件上传防重、智能裁剪等等独特优势功能。 Lerx CMS V5版(以下简称V5版)采用了基于Java的SpringMVC框架,抛弃了V2-V3版本使用的Struts 2。SpringMVC框架更加安全、稳定。ORM持久化框架依旧使用Hibernate,版本为5.4。开发时采用的数据库为MySQL。是一个能快速上手的开源的网站建设CMS。 SpringMVC Hibernate ORM MySQL Hibernate Search(Apache Lucence) IK中文分词 Log4J ... 主要采用Jquery 1.9.1,使用Layui 2模块化前端框架。 Jquery Layui JSON Ajax Lerx 网站内容管理系统主要功能 前后台用户及角色管理、站点管理、栏目、文章管理、模板管理、自由开放的模板市场、系统监测、调查(投票及点赞)、评论、全面的日志系统、来访登记统计系统。 实现功能(标记★的为关键的或独特的内容) 1.跨平台系统,能无差别的运行于Windows、Linux、Mac OS等操作系统。 2.★拥有云端版本更新通知服务器,可在后台获取官方的最新版本及每次更新的版本更新信息,及时通知用户进行升级。 3.★验证码支持短信、邮箱发送。短信模板已支持国内常用短信平台的接口,支持腾讯云短信接口。配置简单。 4.支持最高权限后台登录的限制登录IP功能。IP或IP范围设置灵活,可以同时设多个IP及IP范围的任间组合。 5.在忘记后台登录密码时,支持临时配置文件获取用户名和密码登录模式。 6.用户组(角色)权限利用鼠标点击在权限细节上打勾即可完成。能对用户组(角色)整体禁用,能查看各用户组的会员人数。 7.★前后台用户登录均支持首次不显示验证码模式。拥有多次失败登录后限时锁定及解锁机制。 8.用户模块记录用户的注册时间IP,每次登录的IP、手机、邮箱等细节,能通过简单的标记查看用户的密码修改情况。。每次登录均记录在日志文件中。 9.★可以使用用户名、邮箱、手机号码任一方式进行登录。具有忘记密码功能,可以通过短信、邮箱发送验证码给用户,验证后修改登录密码。 10.★具有深度的来访记录及统计功能。站点、每个栏目、每篇文章均拥有独立的来访IP记录节点模块,可完成从站点开放以来各个节点的年度、季度、月度、星期、天、小时的统计和报表功能。能获得站点、每个栏目、每篇文章的来访IP量及阅读量,能生成独立的报表。 11.每篇文章都各自拥有独立的调查模块,可以完成点赞功能或赞成、反对和中立的页面操作。★能获得每篇文章的调查统计数据及详细报表。 12.每篇文章均拥有独立的评论模块。支持匿名评论,支持评论后审核通过模式,支持文章发布者管理评论,支持前台管理员评论管理。 13.拥有强壮的栏目树功能,移动、排序栏目非常方便。 14.可以设定各个栏目是否对外面,及限制访问IP。可以一键关闭栏目下的所有文章的调查、评论。可以采用聚集功能配合模块调整栏目在前台页面上的栏目及栏目下文章显示。 15.★具有智能裁剪功能。能获知图片的中央矩片后裁剪后并按照设定的尺寸进行缩放。能对指定栏目设定特定的裁剪宽度和高度。能对指定栏目下的文章设定原图上传。 16.★每个栏目可拥有独立的私有特定的HTML,可以无损后显示在栏目的显示页中。 17.可以设定栏目的静态化文件夹名。 18.首页、栏目页、文章页均采用HTML静态化措施。静态化文件为真实静态方式。文章在审核通过时会自动生成HTML文件,在取消审核状态后会自动删除HTML文件。能

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值