나는 10000 개의 고유 값을 순서대로 정렬하는 버블 정렬 프로그램을 작성했습니다.Java 버블 정렬 문제
나는 프로그램을 실행했고 프로그램을 완료하는 데 걸리는 시간 (nanoTime 사용)을 알려주지 만 프로그램의 코드에 다른 출력을 추가하려고합니다. 프로그램이 처음부터 끝까지 정렬하는 데 걸리는 이동 횟수. 나는 그것을 할 방법
public class BubbleSort {
public static void main(String[] args) {
int BubArray[] = new int[]{#here are 10000 integers#};
System.out.println("Array Before Bubble Sort");
for(int a = 0; a < BubArray.length; a++){
System.out.print(BubArray[a] + " ");
}
double timeTaken = bubbleSortTimeTaken(BubArray);
bubbleSort(BubArray);
System.out.println("");
System.out.println("Array After Bubble Sort");
System.out.println(" Time taken for Sort : " + timeTaken + " milliseconds.");
for(int a = 0; a < BubArray.length; a++){
System.out.print(BubArray[a] + " ");
}
}
private static void bubbleSort(int[] BubArray) {
int z = BubArray.length;
int temp = 0;
for(int a = 0; a < z; a++){
for(int x=1; x < (z-a); x++){
if(BubArray[x-1] > BubArray[x]){
temp = BubArray[x-1];
BubArray[x-1] = BubArray[x];
BubArray[x] = temp;
}
}
}
}
public static double bubbleSortTimeTaken(int[] BubArray) {
long startTime = System.nanoTime();
bubbleSort(BubArray);
long timeTaken = System.nanoTime() - startTime;
return timeTaken;
}
}
코드 실행 및 출력 : 여기에
코드입니다Array Before Bubble Sort
13981 6793 2662 10986 733 10107 2850 ...
Array After Bubble Sort
10 11 17 24 35 53 57 60 61 78 83 89 128 131 138 141 ....
Time taken for Sort : 1.6788472E7 milliseconds.
그러나 나는 그것이 어떻게 저를 알려주는 코드에 다른 출력을 추가 할 많은 이동 (기본적으로 이동 카운터) : 예 :
Time taken for Sort : 1.6788472E7 milliseconds.
Total number of moves: 3000
의미가 있습니까? 도움을 주시면 감사하겠습니다.
은 무엇을 의미하게 만들까요? 왜 그런 가치에 관심이 있습니까? – SJuan76
움직임의 수를 추적하기 위해 변수를 선언하고 알고리즘이 값을 이동할 때마다 변수를 추가해야하는 것처럼 들립니다. 그런 다음 그 변수를 끝까지 출력하면됩니다. – jball
그건 그렇고, 우리는'bubbleSort (BubArray);를 두 번 호출합니까? 한 번'bubbleSortTimeTaken'에서와'main'에서 한 번? 실행 시간을 얻으려면'main'에서 하나의 호출 만 제거하십시오. – bhuang3