直接上代码:

 /**
* Name: 求数组中元素重复次数对多的数和重复次数
* Description:
* 数组中的元素可能会重复,这个方法可以找出重复次数最多的数,同时可以返回重复了多少次。
* 但需要知道这个数组中最大的元素是多少,如果无法确定,就悲剧啦~
*
* @param array目标数组;
* max数组中数据的最大值;
* @return 返回一个包含重复次数最多的数(value)和重复次数(maxCount)的map集合;
* 内部出现异常,默认返回0;
* @throws
* @Author 杨元
* Create Date: 2013-11-1 上午11:25:08
*/
public static Map<String, Integer> arraySearch(int[] array,int max){
//结果集合
Map<String, Integer> resultMap = new HashMap<String, Integer>();
//重复的次数
int maxCount = 0;
//重复次数对多的数
int value = 0; try{
//初始化数据数组,用来存放每个元素出现的次数
int[] dataArray = new int[max+1]; //遍历要查找的数组,以每个元素为下标,直接定位数据数组,进行+1操作,表示出现了一次
for(int i : array){
dataArray[i]++;
} //找到数据数组中最大值
for(int i=0;i<dataArray.length;i++){
if(dataArray[i]>maxCount){
maxCount=dataArray[i];
value=i;
}
}
}catch (Exception e) {} resultMap.put("maxCount", maxCount);
resultMap.put("value", value); return resultMap;
} /**
* Name: 比较两个字符串大小
* Description: 比较的规则和数据库中的order by效果一致;
* null自动转为空,空字符串最大;
*
* @param first 要比较的第一个字符串;
* second 要比较的第二个字符串;
* @return first大于second返回正数;
* first等于second返回0;
* first小于second返回负数;
* 内部异常默认返回0;
* 返回值非固定值哦~~;
* @throws
* @Author 杨元
* Create Date: 2013-11-2 上午10:10:04
*/
public static int compareString(String first,String second){
int result = 0; try{
//null转空
first = first==null?"":first;
second = second==null?"":second; //预先记录字符串长度,避免反复读取
int firstLength=first.length();
int secondLength=second.length(); //处理含有空串的特殊情况
if("".equals(first) || "".equals(second)){
//谁长谁小
result = secondLength-firstLength;
}else{
//临时空间,用来存放ascii码总和
int firstCount = 0;
int secondCount = 0;
//用纯运算得出两个数中较小的数,实在是bt
int minLength = (secondLength*(firstLength/secondLength) + firstLength*(secondLength/firstLength))/(firstLength/secondLength + secondLength/firstLength);
//按两个字符串中较短的位数去逐位截取,防止越界
for(int i=0;i<minLength;i++){
//求ascii码和
firstCount+=first.substring(i,i+1).getBytes()[0];
secondCount+=second.substring(i,i+1).getBytes()[0];
//和不相等,说明已经比较出了大小
if(firstCount!=secondCount){
break;
}
} if(firstCount==secondCount){
//长度长的大
result = firstLength-secondLength;
}else{
//总和大的大
result = firstCount-secondCount;
}
}
}catch (Exception e) {} return result;
}

这是小菜利用闲暇时间所写。。

小菜觉得这两个算法仅仅是实现了而已,效率应该不是很高,但还可以凑合用。。。也可以给像俺这样的菜鸟提供一个思路。。。

代码中有详细的注释,小菜就不多说啦~

献上两个java小算法的更多相关文章

  1. 第一章 大体知道java语法1----------能写java小算法

    很多人开始学习java时,都是抱着诸如<Thinking in java>.<疯狂java>等书籍,从前到后慢慢翻看,不管其内容重要与否,也不关心自己以后能否使用到.我的建议是 ...

  2. java 小算法

    //鸡兔同笼 20个头 58腿 for(int a=0;a<=20;a++) { int b = 20-a; if((2*b+4*a)==58) { System.out.println(a+& ...

  3. 两个java小练习

    网上看到的一个小练习,自己写了一个,但是时间限制并不符合,并且貌似还有些小问题,暂时放在这儿,代码格式什么的也不太规范. 1.班级排名时间限制: 1000ms 内存限制: 65536kB 描述 信息科 ...

  4. java小算法—大衍数列

    题目:    中国古代文献中,曾记载过“大衍数列”, 主要用于解释中国传统文化中的太极衍生原理. 它的前几项是:0.2.4.8.12.18.24.32.40.50 ... 其规律是:对偶数项,是序号平 ...

  5. 屏幕上两点画线+DDALine算法

    编译环境VS2017+EasyX #include "stdafx.h" #include"graphics.h" void DDALine(int x0, i ...

  6. 史上最全的java随机数生成算法分享(转)

    这篇文章主要介绍了史上最全的java随机数生成算法,我分享一个最全的随机数的生成算法,最代码的找回密码的随机数就是用的这个方法 String password = RandomUtil.generat ...

  7. Java垃圾收集算法介绍

    垃圾回收器GC(Garbage Collection) 一.引用计数算法(Reference Counting) 介绍:给对象添加一个引用计数器,每当一个地方引用它时,数据器加1:当引用失效时,计数器 ...

  8. Java排序算法之直接选择排序

    Java排序算法之直接选择排序 基本过程:假设一序列为R[0]~R[n-1],第一次用R[0]和R[1]~R[n-1]相比较,若小于R[0],则交换至R[0]位置上.第二次从R[1]~R[n-1]中选 ...

  9. Java与算法之(13) - 二叉搜索树

    查找是指在一批记录中找出满足指定条件的某一记录的过程,例如在数组{ 8, 4, 12, 2, 6, 10, 14, 1, 3, 5, 7, 9, 11, 13, 15 }中查找数字15,实现代码很简单 ...

随机推荐

  1. android 多线程 示例

    public class MyRun implements Runnable { int count = 1000; @Override public void run() { while (true ...

  2. 移动端调试工具-Weinre

    java版本安装和调试 首先需要下载 weinre, weinre目前支持Windows与MacOS, 本文中以Windows版为例. 下载地址:http://people.apache.org/~p ...

  3. js中this对象,call,apply

  4. ( 解压缩版 免安装版 或 zip版 )如何修改mysql5.6.24 字符编码

    1.当我们把zip文件格式解压到指定目录后,并且完成基本环境配置后,打开mysql 5.6.24会发现名为[my-default.ini]的文件.我们用记事本打开该文件会发现并没有[default-c ...

  5. Python基础(七)内置函数

    今天来介绍一下Python解释器包含的一系列的内置函数,下面表格按字母顺序列出了内置函数: 下面就一一介绍一下内置函数的用法: 1.abs() 返回一个数值的绝对值,可以是整数或浮点数等. 1 2 3 ...

  6. oracle全文检索

    全文检索 oracle对使用几十万以上的数据进行like模糊查询速度极差,包括 like 'AAA%' ,like '%AAA',like '%AAA%',like '%A%A%'的那些模糊查询.网上 ...

  7. linux磁盘与文件系统的管理

    本文涉及命令:dumpe2fs.df.du.fdisk.mkfs.mke2fs.fsck.badblocks.mount.umount.e2label.tune2fs.hdparm.parted 概念 ...

  8. Linux系统编程-setitimer函数

    功能:linux系统编程中,setitimer是一个经常被使用的函数,可用来实现延时和定时的功能. 头文件:sys/time.h 函数原型: int setitimer(int which, cons ...

  9. 20145318赵一Java课程总结

    20145318赵一Java课程总结 每周读书笔记链接汇总 问卷调查 第1周读书笔记 第2周读书笔记 第3周读书笔记 第4周读书笔记 第5周读书笔记 第6周读书笔记 第7周读书笔记 第8周读书笔记 第 ...

  10. 20151009 C# 第一篇 基础知识

    20151009 C#:优点: 1. 语法简洁:不直接操作内存,去掉了指针操作 2. 面向对象:具有封装.继承.多态特性 3. 支持Web标准:支持HTML.XML.SOAP 4. 兼容性:遵循.Ne ...