English Deutsch Français Italiano Español Português 繁體中文 Bahasa Indonesia Tiếng Việt ภาษาไทย
所有分類

有一段程式碼不大懂它的意思.....可否幫我註解程式碼和執行的次數...謝謝各位大大


/** BubbleSortApplet
* Ping-Che Chen
*/

import java.lang.*;
import java.util.*;
import java.awt.*;
import java.applet.*;

public class BubbleSortApplet extends SortApplet {

public void run() {
int i, j;

for(i = number - 1; i >= 0; i--) {
for(j = 1; j <= i; j++) {
if(getData(j-1) > getData(j))
swapData(j-1, j);
}
}
}
}


程式碼轉po於http://www.csie.ntu.edu.tw/~b5506061/sort/BubbleSortApplet.java

感謝各位高手大大....

2007-03-21 14:45:10 · 1 個解答 · 發問者 超人不會飛 1 in 電腦與網際網路 程式設計

1 個解答

int i, j;

for(i = number - 1; i >= 0; i--) { // 從 number - 1 做到 0,故做了 number 次
for(j = 1; j <= i; j++) { // 從 1 做到 i,故做 i 次
if(getData(j-1) > getData(j)) // 比較 j-1 與 j 的資料
swapData(j-1, j); // 若 j-1 的資料較大,則交換
}
}

由於 i 值是遞減的,所以總次數為 (number-1) + (number-2) + ... + 1
舉例來說,若 number = 10,則最大的交換資數為 9 + 8 + ... + 1 = 45 次
請參考我的例子。

public class A {
public static void main(String[] args) {
int[] a = {95, 90, 80, 58, 50, 49, 27, 18, 9, 6};

A obj = new A();
obj.bubbleSort(a);
for (int i = 0; i < a.length; i++) {
System.out.print(a[i] + " ");
}
}

public void bubbleSort(int[] a) {
int num = 0;
for(int i = a.length-1 ; i >= 0; i--) {
for(int j = 1; j <=i; j++) {
if(a[j-1] > a[j]) {
int tmp = a[j-1];
a[j-1] = a[j];
a[j] = tmp;
num++;
}
}
System.out.println("t: " + num);
}
System.out.println("Total: " + num);
}
}

2007-03-22 12:20:20 · answer #1 · answered by ? 7 · 0 0

fedest.com, questions and answers