Top-N 알고리즘 구현(자바 버 전)
검색엔진 에서 루 센 과 같은 검색 결 과 는 가장 비슷 한 전 N 조 입 니 다.그러면 어떻게 무질서 한 배열 에서 전 N 개의 최대(또는 최소)값 을 얻 습 니까?다음은 제 가 쓴 Top-N 프 리 젠 테 이 션 프로그램 입 니 다.주로 사용 하 는 데이터 구 조 는 TreeSet 이 고 TreeSet 는 자동 으로 삽입 순 서 를 실현 하 며 전 제 는 이 유형 이 Comparable 인 터 페 이 스 를 실현 해 야 한 다 는 것 이다.
실체 류
/*
* $filename: Student.java,v $
* $Date: 2013-10-23 $
* Copyright (C) ZhengHaibo, Inc. All rights reserved.
* This software is Made by Zhenghaibo.
*/
package edu.njupt.zhb;
/*
*@author: ZhengHaibo
*web: http://blog.csdn.net/nuptboyzhb
*mail: [email protected]
*2013-10-23 Nanjing,njupt,China
*/
public class Student implements Comparable {
private String name;
public Student(String name, int score) {
this.name = name;
this.score = score;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getScore() {
return score;
}
public void setScore(int score) {
this.score = score;
}
private int score;
@Override
public int compareTo(Student o) {
// TODO Auto-generated method stub
if(o.getScore()>this.score){
return 1;
}else if(o.getScore()
Demo
/*
* $filename: TopNTest.java,v $
* $Date: 2013-10-23 $
* Copyright (C) ZhengHaibo, Inc. All rights reserved.
* This software is Made by Zhenghaibo.
*/
package edu.njupt.zhb;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
import java.util.TreeSet;
/*
*@author: ZhengHaibo
*web: http://blog.csdn.net/nuptboyzhb
*mail: [email protected]
*2013-10-23 Nanjing,njupt,China
*/
public class TopNTest {
private TreeSet topN = new TreeSet();//Student Comparable
private List studentList = new ArrayList();
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
TopNTest test = new TopNTest();
test.initList();//
test.topN(10);// 10
test.printTopN();
}
/**
* TreeSet
*/
public void printTopN() {
// TODO Auto-generated method stub
System.out.println("--------------------topN result----------------");
int index = 0;
for(Student student:topN){
index++;
System.out.println("No:"+index+",name="+student.getName()+",score="+student.getScore());
}
}
/**
* 100 , studentList
*/
public void initList(){
System.out.println("--------------------init----------------");
for(int i=0;i<1000;i++){
Random rand = new Random();
Student student = new Student("student"+i, rand.nextInt(100));
studentList.add(student);
//System.out.println("name = "+student.getName()+",score="+student.getScore());
}
}
/**
* N
* @param N N
*/
public void topN(int N){
int minScore = 110;
for(Student student:studentList){
if(minScore>100){//
minScore = student.getScore();
}
if(topN.size()minScore){//topN ,
topN.remove(topN.last());// topN
topN.add(student);
minScore = topN.last().getScore();//
}
}
}
}
실험 결과
초기 화 데 이 터 는 무 작위 로 생 성 된 숫자 이기 때문에 매번 실행 되 는 결과 가 다 릅 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
폭력 매 거 - uva 11464 - Even Parity당신 의 임 무 는 가능 한 한 적은 0 을 1 로 바 꾸 어 모든 요소 의 위, 아래, 왼쪽, 오른쪽 요소 (존재 한다 면) 의 합 을 짝수 로 하 는 것 입 니 다.예 를 들 어 (a) 와 같은 행렬 은 적어도 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.