대답은 분명 할 수도 있지만 여전히 물어볼 필요가 있습니다. 그래서 재미 있고 훈련 된 간단한 Linked_List를 프로그래밍하여 이 목록의 요소를 인쇄하는 한 가지 방법이 실제로 목록을 뒤로 인쇄하는 방법보다 빠르게 실행된다는 것을 알았습니다.Linked_List 탐색에 관한 수수께끼
나는 이것을 설명하는 이유에 대해 계속 생각해 봤지만 나는 계속해서 동그라미로 가고 있었고, 나는 그 이유를 아는 것이 흥미로울 것이다. 여기
내 첫번째 방법여기
public void list(){
Node<E> iter = head;
while(iter != null){
System.out.print(iter.getValue() + ", ");
iter = iter.getNext();
}
}
다른 방법이다 (이 목록의 간단한 이송 임), 상기 목록 후방
public void list_inverse(){
Node<E> iter = head;
Stack<Node<E>> stack = new Stack<Node<E>>();
while(iter != null){
stack.push(iter);
iter = iter.getNext();
}
while(!stack.isEmpty()){
Node<E> tmp = stack.peek();
stack.pop();
System.out.print(tmp.getValue() + ", ");
}
}
에게 인쇄
두 번째 방법의 아이디어는 go입니다. 목록을 통해 각 항목을 스택에 추가하십시오. 끝에 도달하면 스택에 포함 된 요소를 인쇄합니다. 두 번째 방법은 더 오랜 기간 실행해야합니다. 주요 방법
우리는이 :
long startTime = System.nanoTime();
list.list();
long ElapsedTime = System.nanoTime();
System.out.println();
long startTime2 = System.nanoTime();
list.list_inverse();
long ElapsedTime2 = System.nanoTime();
출력이 내가 가진 : 자바에서
give the number for the list, if you want to stop, write stop
1
2
3
4
5
6
7
8
9
10
stop
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, //first method
10, 9, 8, 7, 6, 5, 4, 3, 2, 1, // second method
it has taken 8.15E-5 second for list and 5.19E-5 second for list_inverse
다음을 읽어주십시오. http://stackoverflow.com/questions/504103/how-do-i-write-a-correct-micro-benchmark-in-java – NPE
있습니다. 신비가 없다. 이것은 오도 된 결과를주는 잘못 설계된 마이크로 벤치 마크의 또 다른 경우입니다. 힌트 : NPE의 링크를 읽으십시오. –
좋아, 답장을 보내 주셔서 감사합니다. 정말 빨리 다른 질문을 물어봐도 될까요? 몇 달 전에 프로그래밍을 배우기 시작했는데, 언제 중간 프로그래머라고 생각하면 초보자 상태가 될 수 있는지 알고 싶습니다. –