java 数组中的去重算法分析
来源:互联网 发布:淘宝充值平台加入不了 编辑:程序博客网 时间:2024/04/28 00:02
下面是我写的一个关于数组去重的问题,nodup()方法,当然还有其他的一些数组的操作方法,这个去重的基本思路是:从第一项开始,遍历之后的项,如果遇到和第一项相同的项,就从这个重复项开始,其后的每一项向前移动一个位置。这就有一个问题,就是如果重复项太多,那么移动的次数就太多,效率就会降低。如果大家有好的方法,欢迎讨论。
class HighArray{ private int [] a; private int num; public HighArray(int size){ a = new int [size]; num = 0; } //------------------------------------ public void find(int key){ int i ; for(i = 0 ; i < num ; i++) if(a[i] == key) break; if(i == num) System.out.println("can't find " + key); else System.out.println("find " + key); } //----------------------------------- public void insert(int value){ a[num] = value; num++; } public void delMax(){ int max; int i; max = a[0]; for(i = 1 ; i < num ; i++) if(a[i] > max) max = a[i]; System.out.println("max " + max); for(i=0; i < num ; i++) if(a[i] == max) break; for(int j = i ; j < num ; j++) a[j] = a[j+1]; num--; } //----------------------------------- public void noDup(){ int i; int j=0; for(i = 0 ; i < num ; i++) for(j = i + 1 ; j < num ; j++) if(a[j] == a[i]){ for(int k = j ; k < num ; k++) {a[k] = a[k+1];} num--; } } //----------------------------------- public void delete(int value){ int i; for(i = 0 ; i < num ; i++) if(a[i] == value) if(i != num){ for(int j = i ; j < num ; j++) a[j] = a[j+1]; num--; } else break; } //--------------------------------- public void display(){ for(int i = 0 ; i < num ; i++) System.out.print(a[i] + " "); System.out.print("\n");}public class HighArrayApp{ public static void main (String [] args){ HighArray ha = new HighArray(100); for(int i = 0 ; i < 80 ; i++){int n = (int) (java.lang.Math.random()*79);ha.insert(n);} ha.display(); // ha.delMax(); // ha.find(26); // ha.delete(100); ha.noDup(); ha.display(); }}
0 0
- java 数组中的去重算法分析
- 数组去重算法
- java数组去重
- Java数组去重
- java数组去重
- Java 数组去重
- java数组去重
- Java 数组去重
- Java去重算法
- 讲述js算法中的排序、数组去重
- javascript数组去重分析
- 数组排序去重算法
- 数组去重 算法实现
- JS数组去重算法
- JSON数组去重算法
- java 字符串数组去重
- java数组去重总结
- java数组去重总结
- JS 设计模式之 单例模式
- devexpress的GridControl控件保存数据时数据丢失问题
- 灰色的运用
- 所谓自动战斗系统
- Hibernate抓取策略
- java 数组中的去重算法分析
- 使用floodlight官网下载虚拟机文件Floodlight-vm搭建OpenFlow测试平台
- 高智商孩子14个独有的特点
- android 之 事件传递
- Linux命令:cp (copy)复制文件或目录
- 什么是HTTP Headers
- Linux常用C函数-日期时间篇
- android AsyncTask介绍
- IOS线程的并发与处理(翻译自:http://www.objc.io/issue-2/concurrency-apis-and-pitfalls.html)