下午實驗課要求:
1.帶jdk和編程軟件。
2.生成100個和一萬個元素的隨機值數組。
3.試用冒泡等經典算法、快速排序和數據自帶排序方法,記錄實驗數據。
4.比較算法在不同情況下的效率,進行討論,撰寫實驗報告。
import javax.swing.*;
public class example{
static int ran[] = new int[100];
static int ran2[] = new int[10000];
public static void main(String args[]) {
for(int i=0;i<100;i++) {
ran[i]=(int)(100*Math.random());
}
for(int i=0;i<100;i++) {
System.out.print(ran[i]+" ");
}
System.out.println();
for(int i=0;i<10000;i++) {
ran2[i]=(int)(100*Math.random());
}
for(int i=0;i<100;i++) {
System.out.print(ran2[i]+" ");
}
System.out.println();
//bubble();
System.out.println();
//insert();
System.out.println();
//choose();
System.out.println();
quicksort(0,99);
for(int i=0;i<100;i++) {
System.out.print(ran[i]+" ");
}
}
static void bubble() {//冒泡排序算法
for(int i=0;i<100;i++) {
for(int j=99;j>i;j--) {
if(ran[i]>ran[j]) {
int temp=ran[i];
ran[i]=ran[j];
ran[j]=temp;
}
}
}
for(int i=0;i<100;i++) {
System.out.print(ran[i]+" ");
}
}
static void insert() {
for(int i=1;i<100;i++) {
int temp=ran[i],j;
for(j=i;j>0&&temp<ran[j-1];j--) {
ran[j]=ran[j-1];
}
ran[j]=temp;
}
for(int i=0;i<100;i++) {
System.out.print(ran[i]+" ");
}
}
static void choose() {
for(int i=0;i<100;i++) {
int index=i;
for(int j=i+1;j<100;j++) {
if(ran[index]>ran[j]) {
index=j;
}
}
int temp=ran[index];
ran[index]=ran[i];
ran[i]=temp;
}
for(int i=0;i<100;i++) {
System.out.print(ran[i]+" ");
}
}
static void quicksort(int start,int end) {
if(start>=end) return ;
int i=start;
int j=end;
int base=ran[start];
while(i!=j) {
while(ran[j]>=base&&j>i) j--;
while(ran[i]<=base&&j>i) i++;
if(i<j) {
int temp=ran[i];
ran[i]=ran[j];
ran[j]=temp;
}
}
ran[start]=ran[i];
ran[i]=base;
quicksort(start,i-1);
quicksort(i+1,end);
}
}
沒有比較,等下回去試下