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

以random隨機產生100個亂數,再用shellsort排序
以下是小弟寫的程式:
=============================================
import java.util.Random;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.Timer;

public static void main(String args[])
{
int[] r1=new int[100];
Random r1 = new Random(10000);
for(int i=0;i<100;i++)
}
public class shellsort{
public static void sort(r1 number) {
int gap = number.length /2;
while(gap >0){
for(int k =0;k for(int i = k+gap;i for(int j=i-gap;j>=k;j-=gap){
if(number[j]>number[j+gap]){
swap(number,j,j+gap);
}
else
break;
}
}
}
gap /=2;
}
}
private static void swap(r1 number,int i,int j){
int t;
t= number[i];
number[i]=number[j];
number[j]=t;
}
}
=====================================================
執行結果卻出現:public static void main(String args[]) 此行錯誤

有高手可以幫忙解答嗎?^^

另外如果要利用Timer來計算排序所需要花的時間要如何撰寫呢?

2006-12-22 10:42:33 · 2 個解答 · 發問者 硯柏 1 in 電腦與網際網路 程式設計

2 個解答

我已經將 main() 移至類別中,並做了相關的變更。至於你想要計算排序所花費的時間,可以用 java.lang.System 中的 currentTimeMillis() 方法來做時間標記,請參考我的做法。


import java.util.Random;

public class ShellSort{
public static void sort(int[] number) {
int gap = number.length /2;
while(gap >0){
for(int k =0;k for(int i = k+gap;i for(int j=i-gap;j>=k;j-=gap){
if(number[j]>number[j+gap]){
swap(number,j,j+gap);
}
else
break;
}
}
}
gap /=2;
}
}

private static void swap(int[] number,int i,int j){
int t;
t= number[i];
number[i]=number[j];
number[j]=t;
}

public static void main(String args[])
{
int[] r1=new int[100000];
Random r2 = new Random(10000);
for(int i=0;i r1[i] = r2.nextInt();

long start = System.currentTimeMillis();
ShellSort.sort(r1);
long end = System.currentTimeMillis();

System.out.println("排序共花費 " + (end - start) + " 毫秒 (ms)");
}
}

2006-12-25 10:20:09 · answer #1 · answered by ? 7 · 0 0

main怎麼在class外面呢????
這樣不能compiler...
還是你的程式po上來的時後不小心弄錯了= =

2006-12-22 11:55:25 · answer #2 · answered by ? 2 · 0 0

fedest.com, questions and answers