选择排序小问题

来源:百度知道 编辑:UC知道 时间:2024/05/31 15:50:57
自己写了个选择排序的程序 编译通过 但是报错

public class maopaolll {
public static void main(String args[]){
int[]a={1,2,3,4,5,6,7,44,33};
int min=0;
for(int i=0;i<a.length-1;i++){
min=i;
for(int j=i+1;j<a.length;j++){
if(a[j]<a[min]){
swap(a[j],a[min]);
}
}
}
for(int i = 0;i<a.length;i++){
System.out.println(a[i]);
}

}
private static void swap (int one,int two){
int x;
int [] a = null;
x=a[one];
a[one]=a[two];
a[two]=x;
}
}

报错:Exception in thread "main" java.lang.NullPointerException
at maopaolll.swap(maopaolll.java:22)
at maopaolll.main(maopaolll.java:10)

好像是SWAP 方法有错 谁能告诉我哪错了。。
那我就是想另外写一个SWAP 方法 调用该怎么做 指针不是特别懂 能再帮我写下吗 我再研究研究

public class maopaolll {
public static void main(String args[]) {
int[] a = { 1, 20, 3, 4, 5, 6, 7, 44, 33 };
int min = 0;
int temp ;
for (int i = 0; i < a.length - 1; i++) {
min = i;
for (int j = i + 1; j < a.length; j++) {
if (a[j] < a[min]) {
//swap(a[j], a[min]);
temp = a[j];
a[j] = a[min];
a[min] = temp ;
}
}
}
for (int i = 0; i < a.length; i++) {
System.out.println(a[i]);
}

}

private static void swap(int one, int two) {
int x;
int[] a = null;
x = a[one];
a[one] = a[two];
a[two] = x;
}
}
你那样交换不了的

只是粗看一下..数组a只是局部变量,没传进swap里,不能定义一个相同名字的就当是同一个变量了..你可以把a的指针传进swap,,或者用全局变量..