使其正序排序 打印一串数字_JavaScript计数排序算法

一、计数排序算法

计数排序(Counting sort)是一种稳定的线性时间排序算法。该算法于1954年由 Harold H. Seward 提出。计数排序使用一个额外的数组,数组的下标对应待排序的数字。然后根据新数组的下标来获得正确的顺序。就像给每个位置按数字顺序做好标记,然后把对应数组放入其中,最后把下标打印出来即可。计数排序只适合数量较少的正整数排序。其算法复杂度接近于:O(N + K)

步骤是:

  1. 找到待排序中最大和最小的元素;
  2. 新建一个计数数组,长度为最大与最小值的差值+1;
  3. 遍历待排序数组,将数字与计数数组下标对应,按出现次数做标记;做对应时为了减少数组长度,可以用下标减去最小值;
  4. 反向取出数据,按出现的次数逐个追加到输出数组中。

二、计数排序算法执行过程分析:

9de7e567daea6b33e0670eedbb2d683b.png

三、计数排序代码标准版实现

标准版移植自C语言版,得到最大最小值,再新建空的计数数组,长度为差值+1,再统计对应下标的数字,最后将计数数组逐个还原打印出来。

77d87b60b7689962b8b4a468ef0275ce.png
8a30a622c768cadd8938788b080bf223.png

四、计数排序代码简版

JS语言非常灵活好用,并不需要想C语言或Java等提前指定数组的大小,因此也没有必要利用减少min来标记数据。整体思路就是利用下标统计对应的数字,然后按照下标取出数字来即可。代码量非常少,也很简单易懂。

ec3d90276730992c0e53c4eab1fc48b4.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/290138.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

shiro real的理解,密码匹配等

1 、定义实体及关系 即用户-角色之间是多对多关系,角色-权限之间是多对多关系;且用户和权限之间通过角色建立关系;在系统中验证时通过权限验证,角色只是权限集合,即所谓的显示角色;其实权限应该对应到资源&…

Visual C#使用ADO.NET自定义类MyDBase连接SQL Server数据库

本文为Visual C#使用ado.net技术跟SQL Server数据库交互的自定义类MyDBase,通过该类,可以快速高效的实现数据库的连接、获取数据集、获取数据的个数、执行SQL语句等。例如,连接数据库的方法构建为: public MyDBase(string MyDBServerName, string MyDataBaseName, string …

Android之看起来像奔溃了但是没有发现奔溃日志

1、问题 startActivity之后,然后finish,发现输入密码文本框密码没了,以为奔溃了,但是没有发现奔溃日志 2、思考 我想是不是因为调用蓝牙API结束后还有哪些没有写,往第三方API思考去了,然后我用pidcat.py 和adb logcat看…

ASP.NET-----Repeater数据控件的用法总结(转)

ASP.NET-----Repeater数据控件的用法总结(转) 一、Repeater控件的用法流程及实例: 1、首先建立一个网站,新建一个网页index.aspx。 2、添加或者建立APP_Data数据文件,然后将用到的数据库文件放到APP_Data文件夹中。 3、打开数据库企业管理器&…

Vue2.x项目整合ExceptionLess监控

前言一直以来我们都是用Sentry做项目监控,不过前段时间我们的Sentry坏掉了(我搞坏的)但监控又是很有必要的,在sentry修好之前,我想先寻找一个临时的替代方案,同时发现网上关于ExceptionLess的资料少得可怜&…

Jenkins修改管理员密码.

前言:Jenkins修改管理员密码,我看了网上所有的教程,竟然全都是拿着一串已经加密好的111111的密文去替代config.xml文件里面的密码,然后大家的密码都是111111!我觉得这种做法实在太敷衍了!于是我就研究了下&…

截取指定字符前_VBA学习笔记35-1:字符串拆分与组合

学习资源:《Excel VBA从入门到进阶》第35集 by兰色幻想本课的示例都在立即窗口展示运行结果,要在立即窗口展示的话要使用“Debug.Print”。Debug.Print 将代码执行结果显示在“立即窗口”中,但不影响程序执行。一、字符串截取1.left,right,mi…

C++之inline函数

1、为什么需要inline C中的宏没有调用,参数压栈、返回操作所以比函数快,但是有参数副作用,inline为了取代这种表达式形式的宏定义,它消除了宏定义的缺点,同时又很好地继承了宏定义的优点。 2、inline如何使用以及特点 1)、inline一般写 在C++函数定义的前面,一般…

即时聊天IM之一 XMPP协议简述

合肥程序员群:49313181。 合肥实名程序员群:128131462 (不愿透露姓名和信息者勿加入) Q Q:408365330 E-Mail:egojitqq.com 综述: 之前小规模的IM一直通过百度云推实现模拟IM,这种局限性比较多。公司很多的项目都需要IM集成…

微软职位内部推荐-Senior PM

微软近期Open的职位:Senior Product ManagerMy Life & WorkBeijing ChinaOur passion is to enable people to thrive in this mobile-first and cloud-first world.Do you see how antiquated our surrounding is when the virtual world has already become more advance…

c#Clay开源的动态语言dynamic框架,让您形如javascript的方式创建对象!

简介Clay非常类似于ExpandoObject, 可以看做是ExpandoObject的加强版. 它们能够让我们在不需要定义类的情况下,就构建出我们想要的对象。Clay和ExpandoObject相比,提供了更加灵活的语法支持,让我们像写javascript代码一样写C#代码&#xff0c…

Android之ndk编译出现“undefined reference to method“解决办法

1、问题 我自己写了C的头文件和实现的C文件,然后编译成csapp.so库,然后在jni里面写了Android.mk文件和Application.mk文件,配置确保已经没问题,然后csapp.so的位置和头文件都放对了,然后写了一个测试test.cpp文件,然后这个里面调用了csapp.so里面的方法,然后我 ndk-buil…

7 种 JavaScript 技巧使你更聪明

1.总是颠倒逻辑 让我们从一个小优化开始,目的是为了使得非常简单的操作看起来复杂些。 if (x && y) { … } // bad if (!(!x || !y)) { … } // good2.在你的变量名字里使用扩展的unicode字符 编译好的软件一旦发布成产品,它必须是一个黑盒。这对…

设置访问权限_【新思考教学者思】李世松:不要对经典设置访问权限

不要对经典设置访问权限——《背影》备课札记文/李世松紫阳县举办课堂教学改革推进会,师训教研中心王主任电话通知我讲一节示范课。我知道,这既是对我的一种肯定,更是一次磨炼,因为我的师父邱俊老师会到现场点评课堂。自领受任务之…

C++语言打印汉字表

#include<iostream> using namespace std; main() {int i,j;for(i=0xA1;i<=0xFE;i++){for(j=0xA1;j<=0xF7;j++)printf("%c%c",i,j); // 或者用cout输出函数:cout<<char(i)<<char(j);printf("\n");} } 说明: 16进制和10进制转换…

《算法竞赛入门经典》第三章 3.4

程序 3-5 程序 3-6 转载于:https://www.cnblogs.com/LzKlyhPorter/p/4192250.html

C#使用Objects Comparer进行对象比较

介绍Objects Comparer是用于对象比较的工具&#xff0c;c#常见的数据结构都是可以用这个三方库进行对比&#xff0c;比较复杂的对象也是可以比较的。简而言之&#xff0c;Objects Comparer 是一个对象到对象的比较器&#xff0c;它允许逐个成员递归得比较对象&#xff0c;并为某…

jQuery07源码 (3803 , 4299) attr() prop() val() addClass()等 : 对元素属性的操作

var nodeHook, boolHook,rclass /[\t\r\n\f]/g,rreturn /\r/g,rfocusable /^(?:input|select|textarea|button)$/i;jQuery.fn.extend({attr: function( name, value ) { //遍历this //arguments.length > 1,jQuery.attr(this[i],name,value),返回this //arguments.lengt…

Eclipse提示The **** cannot be resolved. It is indirectly referenced from required .cl

1、问题 代码正常&#xff0c;提示这个错误The **** cannot be resolved. It is indirectly referenced from required .cl 2、解决办法 把提示错误地方的类改成在这个****包名下面就行

ora22813操作数值超出系统的限制_最新:华为“鸿蒙”操作系统终于面世!一旦遭到限制,将随时启用...

受美国的要求&#xff0c;自5月开始&#xff0c;安卓暂停了与华为的部分合作&#xff0c;而这直接影响到了华为对安卓系统的正常更新。迫于无奈之下&#xff0c;华为对外表示&#xff0c;已经准备了备用系统&#xff0c;但只在必要的情况下使用&#xff0c;而这一系统就是广为人…