`
xiang37
  • 浏览: 428328 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

有一个100万的数组,里边有两个市重复的,如何设计算法找到

阅读更多

 

package com.xiva.demo;

import java.util.*;
public class ArrayDemo{


    @SuppressWarnings("rawtypes")
	public static void main(String[] args){
    	
    	Date starTime = new Date();
    	System.out.println(starTime);
        int[] a = new int[1000000];

        for(int i = 0; i<1000000;i++){
           a[i] = i+1;  //从1--1000000没有重复的
        }
        

        a[377455] = 	100;
//        Date endTime = new Date();
//    	System.out.println(endTime);
    	
    	
//        List<Integer> list = new ArrayList<Integer>();
        Set set=new HashSet();
//        for(int i = 0 ; i < 1000000;i++){
//            Integer temp = new Integer(a[i]);
//            if(!list.contains(temp)){
//                 list.add(temp);
//            }else{
//                 int j = list.indexOf(temp) ;//第一次出现
//                 System.out.println("第"+(j+1)+"个数和第"+(i+1)+"个数重复为:"+temp);
//                 break;  //找到即退出
//            }
//        }
        int i = 0;
        for( i=0;i<a.length;i++)
        {
         if(!set.add(a[i]))
        	 break;
        }
        Iterator itreator = set.iterator();
        int j = 1;
        while(itreator.hasNext()){
        	int temp = Integer.parseInt(itreator.next().toString());
        	if(temp == a[i])
        		break;
        	j++;
        }
        System.out.println(i);
        System.out.println(j);
        System.out.println("the same number is "+a[i]);
        
        Date endTime = new Date();
    	System.out.println(endTime);

    }
}

 HashSet的效率要高多了啊;还有其转换的Iterator遍历效率也不错~

 

 

 

package com.xiva.demo;

import java.util.*;
public class ArrayDemo{

    @SuppressWarnings({ "rawtypes", "unchecked" })
	public static void main(String[] args){
    	
    	Date starTime = new Date();
    	System.out.println(starTime);
        int[] a = new int[1000000];

        for(int i = 0; i<1000000;i++){
           a[i] = i+1;  //从1--1000000没有重复的
        }
        
        a[377455] = 	44555;

        Set set=new LinkedHashSet();//为有序hashSet
//        Set set=new HashSet();
        int index = 0;
        for( index=0;index<a.length;index++)
        {
         if(set.contains(a[index]))
        	 break;
         else{
        	 synchronized (set) {
        		 set.add(a[index]);
			}
        	
         }
        }
        Iterator itreator = set.iterator();
        int j = 1;
        while(itreator.hasNext()){        	
        	Object obj = itreator.next();
        	int temp = Integer.parseInt(obj.toString());
        	if(temp == a[index])
        		break;
        	j+=1;      	
        }
        System.out.println(index);
        System.out.println(j);
        System.out.println("the same number is "+a[index]);
        
        Date endTime = new Date();
    	System.out.println(endTime);

    }
}

 

LinkedHashSet为有序类

 

分享到:
评论

相关推荐

    链表实现100万数的奇偶大小排列

    在这个题目中,“链表实现100万数的奇偶大小排列”是一个关于利用链表对随机生成的100万个数字进行特定排序的任务。下面我们将详细探讨这个话题。 首先,我们需要理解链表的基本概念。链表不同于数组,它不是一块...

    数据结构与算法分析

    通过模拟含有100万个随机元素的文件,且k设定为500,000的情况可以发现,这两种算法都需要几天的计算机处理时间才能完成计算(尽管最终会给出正确的答案)。而在第七章中介绍的一种替代方法可以在大约一秒内得到解答...

    java50道经典练习题.docx

    60万到100万之间时,高于60万元的部分,可提成1.5%,高于100万元时,超过100万元的部分按1%提成。 **知识点解析:** - **条件判断**:根据利润的不同区间进行条件判断。 - **分段函数**:奖金计算遵循不同的分段...

    图书查询系统,随机生成100万条图书编号

    在本项目中,我们关注的是一个名为"图书查询系统"的应用程序,该程序的主要功能是模拟图书馆的图书编号管理,并且能对这100万条图书信息进行快速查询。这个系统采用了一些高效的算法和数据结构来处理大量数据,如...

    RC4算法C语言实现

    因此,RC4的一个重要弱点在于存在一些弱密钥,这些密钥可能导致子密钥序列在短时间内(例如不足100万字节)完全重复或者部分重复(不足10万字节)。为了确保安全性,在使用RC4算法时建议对加密密钥进行测试,排除...

    C语言经典算法100例.doc

    程序通过循环遍历10万以内的整数,对每个数计算加100和加268后的平方根,然后检查这两个平方根的平方是否等于原来的数加相应的值,以找到符合条件的数。 ```c for (i=1; i; i++) { x = sqrt(i+100); y = sqrt(i+...

    数据结构与算法分析(英文C版)

    在这个问题中,输入包括一个二维字母数组和一个单词列表,目标是在这个数组中找到所有的单词。这些单词可能出现在水平、垂直或对角线方向上。这个问题展示了如何利用数据结构(如二维数组)和算法(如深度优先搜索)...

    Labview应用技术 n个随机数的最大最小值(FOR课堂实训)1.docx

    - 添加一个指示器或数组显示控件,用于初步观察随机数序列。 2. **程序框图实现**: - 首先,需要用到“随机数”函数生成0到100范围内的随机数。LabVIEW的标准库中提供了“均匀分布随机数”函数,可以设置其种子...

    多任务下数据结构与算法(习题与思考答案提示)

    题目中要求在插入100万个整数后,使用二分查找找到100万个更大的数,以此测试效率。 4. **动态环形队列**:动态环形队列是一种高效的数据结构,可以实现头尾插入和删除。题目要求实现`DeQue_PopTail()`和`DeQue_...

    C语言经典100例经典

    通过循环遍历1到10万之间的整数,对每个数分别进行加100和加268后的平方根计算,然后判断这两个平方根是否等于对应的整数。这种方法利用了数学中的完全平方数性质,以及C语言中的数学函数库(如sqrt)。 【程序4】...

    程序员笔试

    根据题目,每月有2万个号,20个月内共有40万个号,第一个月有100万人参与,之后每月增加4万人,因此20个月后总人数为100万+(20×4)=108万。小军摇中的概率为2万/108万。 2. **网络协议与TCP连接**:TCP连接的稳定性...

    C语言qsort函数算法性能测试

    qsort函数的算法性能强劲,主要原因是它采用了基于比较的排序算法,即每次比较两个元素,选择较小的元素作为下一个元素。这种算法可以在O(nlg(n))时间内完成排序操作。 在实际应用中,qsort函数广泛应用于各种排序...

    net学习笔记及其他代码应用

    答:两个对象,一个是“xyx”,一个是指向“xyx”的引用对象s。 38.abstract class和interface有什么区别? 答: 声明方法的存在而不去实现它的类被叫做抽象类(abstract class),它用于要创建一个体现某些基本行为...

    MNIST 手写数字图像数据

    MNIST数据集通常以二进制或pickle格式提供,包括两个文件:一个是图像数据,另一个是对应的标签。在解压后的MNIST文件中,这些数据以numpy数组的形式存储,便于Python编程语言进行处理。 - 图像数据:每个图像被展...

    最新Java面试宝典pdf版

    18、一个用户表中有一个积分字段,假如数据库中有100多万个用户,若要在每年第一天凌晨将积分清零,你将考虑什么,你将想什么办法解决? 107 19、一个用户具有多个角色,请查询出该表中具有该用户的所有角色的其他...

    raptor编程设计例题

    * 顺序查找:任意输入10个数存入一维数组S,然后再输入一个待查找数据存入变量X,要求在数组S中用顺序查找法查找X,若找到数据则打印该数,否则打印“Not find!” * 打印九九乘法表:打印九九乘法表 * 菲波拉契数列...

    Microsoft.Net常见问题集锦

    - 可以通过创建一个包含 1 到 100 的序列,然后使用随机算法打乱数组元素的顺序来实现。 26. **列举 ASP.NET 页面之间传递值的几种方式。** - 使用 URL 传递查询字符串参数、ViewState、HiddenField、Session、...

Global site tag (gtag.js) - Google Analytics