//java基本语法:排序
//演示:各种排序法
//1.冒泡排序法
//2.选择排序法
package shuzu16;
import java.util.*;
public class Dome2 {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
int len=100000;
int[] arr1=new int[len];
for(int i=0;i<len;i++){
//让程序随机产生一个1-10000数
//Math.random()会随机产生一个0-1
int t=(int)(Math.random()*10000);
arr1[i]=t;
}
//创建一个Bubble类
/* Bubble bubble=new Bubble();
bubble.sort(arr1);
*/
//创建一个Select类
Select1 select=new Select1();
//在排序前打印系统时间
Calendar cal=Calendar.getInstance();
System.out.println("排序前"+cal.getTime());
select.sort(arr1);
//重新获得实例why(因为getInstance是单态)
cal=Calendar.getInstance();
System.out.println("排序后"+cal.getTime());
//输出最后结果
for(int i=0;i<arr1.length;i++){
System.out.println(arr1[i]+"");
}
}
class Select1{
//选择排序
public void sort(int arr[]){
//我认为第一个数是最小的
int temp=0;
for(int j=0;j<arr.length;j++){
int min=arr[j];
//记录最小数的下标
int minIndex=j;
for(int k=j+1;k<arr.length;k++){
if(min>arr[k]){
//修改最小
min=arr[k];
minIndex=k;
}
}
//当退出for就找到这次的最小值
temp=arr[j];
arr[j]=arr[minIndex];
arr[minIndex]=temp;
}
}
}
}
class Bubble{
//排序方法1
public void sort(int arr[]){
int temp=0;
//排序
//外层循环,他一共走几趟
for(int i=0;i<arr.length-1;i++){
//内层循环,开始逐个比较,如果发现前一个数比后一个数大,则交换
for(int j=0;j<arr.length-1-i;j++){
if(arr[j]>arr[j+1]){
//换位
temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}
}
}
调试出现
Exception in thread "main" java.lang.Error: Unresolved compilation problem:
No enclosing instance of type Dome2 is accessible. Must qualify the allocation with an enclosing instance of type Dome2 (e.g. x.new A() where x is an instance of Dome2).
at shuzu16.Dome2.main(Dome2.java:34)
Calendar cal=Calendar.getInstance();
这是报错位置,是不是没有引用便使用方法了
是因为你的类Select1类是在Demo2的同一个类文件中定义的,这就是内部类的使用了。所以 Select1 select=new Select1();报错了。
把Select1和Bubble类都单独定义为一个类就好了。
可以如同@毕小宝说的,将Select1定义成类似Bubble的在同一个文件中,但在Demo2之外的类;或者在Select1之前加上private static变成静态内置类。
private static class Select1{...}