`
小皮球
  • 浏览: 33912 次
  • 性别: Icon_minigender_1
  • 来自: 成都
文章分类
社区版块
存档分类
最新评论

多个数字中出一个数字

 
阅读更多
10000+个数字钟找出top100

Java代码  收藏代码

    import java.util.Arrays; 
    import java.util.Random; 
     
    public class Top100 { 
        private static Node head = null; 
        private static Node end = null; 
        private static Node tempNode = null; 
        private static Node node = null; 
     
        public static int[] getTop100(int[] inputArray) { 
     
            int result[] = new int[100]; 
            int k = 100; 
            if (inputArray.length < 100) { 
                k = inputArray.length; 
            } 
            for (int i = 0; i < 100; ++i) { 
                result[i] = inputArray[i]; 
            } 
     
            Arrays.sort(result); 
     
            for (int i = k - 1; i >= 0; i--) { 
                node = new Node(result[i], tempNode); 
                if (i == k - 1) { 
                    head = node; 
                } else { 
                    tempNode.right = node; 
                } 
                if (i == 0) { 
                    end = node; 
                }else{ 
                    tempNode = node; 
                } 
            } 
            tempNode = end ; 
             
             
            for (int i = 100; i < inputArray.length; i++) { 
                int tempValue = inputArray[i]; 
                if (tempValue <= end.value) { 
                    continue; 
                }else{ 
                    tempNode = end; 
                    setValue(inputArray[i]) ; 
                } 
            } 
     
            for (int i = 0; i < 100; i++) { 
                if (i == 0) { 
                    node = head; 
                } else { 
                    node = node.right; 
                } 
                result[i] = node.value; 
            } 
     
            return result; 
     
        } 
     
        private static void setValue(int tempValue) { 
            if (tempNode.value < tempValue) { 
                tempNode = tempNode.left; 
                //最大的 
                if(tempNode==null){ 
                    node = new Node(head,tempValue ); 
                    head.left = node ; 
                    head = node ; 
                    removeEnd() ; 
                }else{ 
                    setValue(tempValue); 
                } 
            } else if (tempNode.value != tempValue) { 
                node = new Node(tempValue, tempNode); 
                //要替代end 
                if(tempNode.right==end){ 
                    end.left.right = node ; 
                    end = node ; 
                }else{ 
                    try { 
                        tempNode.right.left = node; 
                    } catch (Exception e) { 
                        // TODO Auto-generated catch block 
                        System.err.println(tempNode.right) ; 
                        e.printStackTrace() ; 
                        System.exit(0) ; 
                    } 
                    tempNode.right = node; 
                    removeEnd() ; 
                } 
            } 
        } 
         
        private static void removeEnd(){ 
            end = end.left ; 
            end.right = null ; 
        } 
     
        public static void main(String[] args) { 
     
            int numberCount = 1000000; 
     
            int maxNumber = numberCount; 
     
            int inputArray[] = new int[numberCount]; 
     
            Random random = new Random(); 
     
            for (int i = 0; i < numberCount; ++i) { 
     
                inputArray[i] = Math.abs(random.nextInt(maxNumber)); 
     
            } 
     
            System.out.println("Sort begin..."); 
     
            long current = System.currentTimeMillis(); 
     
            int[] result = Top100.getTop100(inputArray); 
     
            System.out.println(System.currentTimeMillis() - current + "ms"); 
     
            for (int i = 0; i < result.length; ++i) { 
     
                System.out.print(i + "." + result[i] + ","); 
     
            } 
     
        } 
     
    } 
     
    class Node { 
        protected int value; 
        protected Node left; 
        protected Node right; 
     
        public Node(int value) { 
            this.value = value; 
        } 
     
        public Node(int value, Node left) { 
            this.value = value; 
            this.left = left; 
        } 
     
        public Node(Node right, int value) { 
            this.right = right; 
            this.value = value; 
        } 
    } 

分享到:
分享到:
评论

相关推荐

    获取一个字符串中的数字组

    标题中的“获取一个字符串中的数字组”是指从包含数字和非数字字符的字符串中提取连续的数字,并将它们作为整数处理。描述中提到的任务是输入一个字符串,例如"a123x456_17960? 302tab5876",从中找出所有的连续数字...

    中文数字转成阿拉伯数字 java 实现

    在Java编程语言中,将中文数字转换为阿拉伯数字是一个常见的需求,特别是在处理中文文本数据时。这个场景下,我们有一个名为“中文数字转成阿拉伯数字 java 实现”的压缩包,包含了一个实现此功能的Java包和一个单元...

    多功能数字时钟课程设计报告

    4. **数字电子钟的设计**:设计一个数字电子钟需要实现精确的时间显示、时间校正功能和整点报时。这涉及到时钟的初始化、时间更新逻辑、校正机制以及报时信号的触发。 5. **校正时间功能**:校正时间功能允许用户...

    中文数字转换为阿拉伯数字

    这个问题通过修改两行代码得到了解决,这展示了编程中的一个常见实践:不断优化和修复已存在的代码以适应更多的情况。 标签“数字转换”进一步确认了这是一个涉及数字表示转换的程序设计问题。在PHP中,这类问题...

    判断一个CString对象是否全是数字

    代码示例中通过一个循环遍历`CString`对象的每个字符,并检查这些字符是否属于数字范围或小数点。 #### 3. 数字和小数点的ASCII码值 在ASCII码表中,数字0到9的ASCII码值分别为48到57。小数点的ASCII码值为46。...

    scratch找出现次数最多的数字 scratch四级2021年9月

    找出出现次数最多的数字,如果有多个数字出现次数相同,则答案为后输入的数字 主要考查有限循环、条件分支结构、变量、列表定义和使用、字符串操作等积木的使用 案例分析:http://gg.gg/12iokl

    多相滤波数字信道化MATLAB源码

    在通信系统中,数字信道化是一种常见的信号处理技术,用于将宽带信号分解成多个窄带通道,每个通道可以独立处理。多相滤波器是实现数字信道化的核心工具,尤其在数字频分复用(FDM)系统中应用广泛。MATLAB作为一种...

    分省数字经济发展水平测度指标(20多个指标)

    2020年)、移动电话普及率(每百人部数)(2011-2020年)、互联网宽带接入端口数(万个)(2011-2020年)、互联网域名数(万个)(2011-2020年)、软件业收入(万元)(2012-2020)、数字金融覆盖广度(2011-2020)...

    多功能数字时钟 数字电子技术课程设计

    总的来说,这个课程设计项目是一个综合性的实践任务,涵盖了数字电子技术的多个重要方面,旨在提高学生的动手能力和理论应用能力。通过这样的项目,学生不仅能学习到数字电路的基本知识,还能掌握使用现代EDA工具...

    数电课程设计(多功能数字钟)

    在数字电子技术课程中,一个常见的实践项目是设计并实现多功能数字钟。这个设计通常涉及使用硬件描述语言(HDL),如VHDL,来创建一个可以显示多种时间格式的时钟系统。以下是对这个项目及其相关知识点的详细说明: ...

    统计字符串中数字的个数

    - **空间复杂度**:空间复杂度为O(1),因为无论输入字符串多长,都需要且只需要一个固定长度为10的一维数组来存储数字出现的次数。 - **扩展性**:该算法易于理解和实现,适用于快速解决问题。但是,如果需要处理更...

    基于VHDL的多功能数字钟设计

    本设计旨在通过理解数字钟的原理,运用VHDL语言来构建一个具备计时、整点报时和时间重置功能的多功能数字钟。VHDL是一种硬件描述语言,它允许设计者以抽象的方式描述数字系统的行为和结构,进而通过EDA(电子设计...

    java一亿数字取前100个(3秒钟获取)

    在这个场景中,我们需要从一亿个数字中快速找出前100个最小的数字。这通常涉及到排序算法和数据结构的运用,以达到在短时间内找到目标结果。以下是实现这个任务的一些关键知识点: 1. **优先队列(Priority Queue)...

    multisim仿真多功能数字钟电路设计源文件+课设文档资料.zip

    数字时钟的扩展功能则是在数字时钟的主体添加的外电路部分,其由可多个与非门的逻辑电路构成整点报时、闹钟,也可由计数器或比较器与逻辑门组成一个报时电路或一个闹钟,以及日期的显示电路。 2.2硬件设计 2.21...

    对pdf文档进行数字签名

    在PDF文档中,数字签名是通过在文档中嵌入一个由私钥生成的哈希值来实现的。这个哈希值代表了文档在签名时的内容,任何后续的修改都会导致哈希值的变化,从而使得签名无效。此外,数字签名还会包含签名者的证书,这...

    数字0-9中文语音及其26个英文字母语音wav格式

    而在语音识别中,识别每个字母的发音有助于准确解析用户说出的单词。 此外,这些音频文件还可以应用于无障碍技术,帮助视觉障碍人士理解和操作数字和字母相关的电子设备。比如,屏幕阅读器可以读取这些音频,将数字...

    C#中三种判断是不是数字的方法

    在C#编程中,判断一个字符串是否为数字是很常见的问题。今天,我们将介绍三种不同的方法来判断一个字符串是否为数字。 第一种方法:Try Catch 方法 该方法使用try catch语句来判断字符串是否为数字。例如: ``` ...

    数字五笔中文输入系统+注册机

    它将汉字拆分为不同的部分,每个部分对应一个或多个五笔码,通过这些五笔码的组合来输入汉字。数字五笔在此基础上,利用数字键进行编码输入,减少了手指在主键盘与小键盘之间的移动,提高了输入速度。 在数字五笔...

    深入浅出数字信号处理_江志红

    《深入浅出数字信号处理》是由江志红编著,北京航空航天大学出版社在2012年出版的一本专业书籍,旨在为读者提供一个清晰、易懂的数字信号处理学习平台。数字信号处理(Digital Signal Processing,简称DSP)是现代...

    输入一些数字,输出每个数重复出现的次数

    在编程领域,统计数字的重复次数是一个常见的任务,特别是在数据处理和分析中。这个任务可以通过多种编程语言来实现,例如Python、Java、C++等。这里我们主要以Python为例,探讨如何实现这个功能。 首先,我们需要...

Global site tag (gtag.js) - Google Analytics