게시판 즐겨찾기
편집
드래그 앤 드롭으로
즐겨찾기 아이콘 위치 수정이 가능합니다.
자바 우선순위 큐 정렬하는 문제요 ㅠㅠ
게시물ID : programmer_21338짧은주소 복사하기
작성자 : 코카인콜라
추천 : 0
조회수 : 507회
댓글수 : 5개
등록시간 : 2017/09/10 19:07:19
옵션
  • 외부펌금지
queue에서 아웃풋을 번호순으로 정렬하는건데 막히네요.. 자꾸 인풋 순서대로만 나와요 ㅠ 어떻게 번호순으로
정렬할 수 있나요??..
그리고 혹시 실례가 안된다면 priorityqueue 클래스안의 내용이 너무 헷갈려서 주석식으로 설명해주실수 있다면 정말
감사하겠습니다.... 

priorityqueue class----------------------------------------------------------
public class PriorityQueue {

private int maxSize;  
private Passenger[] queueArray;
private int nItems, front, lowerBound, upperBound, curIn;

public PriorityQueue(int s) {
    maxSize = s;
    queueArray = new Passenger[maxSize];
    front = 0;
    nItems = 0;
}

    
public void insert(Passenger something) {
    int j;
    
    if(nItems ==0) {
        queueArray[nItems++] = something;}
    else {
        for (j = nItems -1; j>=0; j--) {
    if (something.getNumber() < queueArray[j].getNumber())
{
    queueArray[j +1] = queueArray[j];
    } else {
    break;
}
}
    queueArray[j +1] = something;
    nItems++;
}
}

public Passenger find(int F) {
    lowerBound = 0;
    upperBound = nItems - 1;
    while (lowerBound <= upperBound) {
        curIn = (lowerBound + upperBound) /2;
    if (queueArray[curIn].getNumber() ==F) {
        System.out.println(F + " found at location " + curIn);
    break;
        } else if (queueArray[curIn].getNumber() < F) {
    lowerBound = curIn+1;
        } else {
    upperBound = curIn-1;
        }
 
    return queueArray[curIn];
}
    return null;
    
    }
 
    
public Passenger remove() {
   
     Passenger temp = queueArray[front++];
     nItems--;
     return temp;
}

public String peek(int j) {
    return queueArray[j].displayPassenger(); 
}

public Passenger peekFront() {
    return queueArray[front];
}

public boolean isEmpty() {
    return (nItems ==0); }

public boolean isFull() {
    return (nItems == maxSize);
}
}   
priorityqueueapp class--------------------------------------------------------
public class PriorityQueueApp {

    public static void main(String[] args) {

    int maxSize = 10;
    PriorityQueue arr;
    arr = new PriorityQueue(maxSize);
    Passenger[] p = new Passenger[maxSize];

    p[0] = new Passenger(105, "Hashimoto", "Sato", 21);
    p[1] = new Passenger(103, "Yee", "Tom", 43);
    p[2] = new Passenger(101, "Evans", "Patty", 24);
    p[3] = new Passenger(102, "Smith", "Lorraine", 37);
    p[4] = new Passenger(104, "Adams", "Henry", 63);
    p[5] = new Passenger(106, "Stimson", "Henry", 29);
    p[6] = new Passenger(109, "Vang", "Minh", 22);
    p[7] = new Passenger(107, "Velasquez", "Jose", 72);
    p[8] = new Passenger(108, "Lamarque", "Henry", 54);
    p[9] = new Passenger(110, "Creswell", "Lucinda", 18);

    for (int i =0; i< maxSize; i++)
        System.out.println(p[i].displayPassenger());
        System.out.println("");

    for (int j=0; j < maxSize; j++)
        arr.insert(p[j]);

    int searchNumber = 106;
        Passenger found;
        found = arr.find(searchNumber);

    if (found != null) {
        System.out.print("Found ");
        System.out.println(found.displayPassenger());
        System.out.println("");
        }

    while (!arr.isEmpty()) {
        Passenger n = arr.remove();
        System.out.print(n.displayPassenger());
        System.out.println("");
}

    for (int h = 0; h < maxSize; h++) {
        System.out.println(arr.peek(h));
        arr.remove();
}
    }
}
전체 추천리스트 보기
새로운 댓글이 없습니다.
새로운 댓글 확인하기
글쓰기
◀뒤로가기
PC버전
맨위로▲
공지 운영 자료창고 청소년보호