初步学习Java,用几个算法进行练习
public class TestArray {
public static void main(String[] args) {
int [] a = {2, 4, 6, 7, 3, 5, 1, 9, 8};
int [] b ;
b= new int[a.length];
b = NumberSort1(a);
//System.out.println(b); //错误的写法,数组不能一次性打印,需一个一个地取。
print(b);
}
//快速排序
private static int[] NumberSort1(int[] a) {
try{
for(int i=0; i<a.length-1; i++) {
if (a[i]>a[i+1]) {
for (int j=i+1; j>0; j--) {
if (a[j] < a[j-1]) {
int temp;
temp = a[j-1];
a[j-1] = a[j];
a[j] = temp;
}
}
}
}
}catch (ArrayIndexOutOfBoundsException e){
e.printStackTrace();
}
return a;
}
//算法2
private static int[] NumberSort2(int[] a) {
for (int i=0; i<a.length; i++) {
for (int j=i+1; j<a.length; j++) {
if (a[i] > a[j]) {
int temp;
temp = a[i];
a[i] = a[j];
a[j] = temp;
}
}
}
return a;
}
//算法2改进版
private static int[] NumberSort21(int[] a) {
for (int i=0; i<a.length; i++) {
for (int j=i+1; j<a.length; j++) {
if (a[i] > a[j]) {
}
}
}
return a;
}
private static void print(int[] a) {
for (int i = 0; i<a.length; i++) {
System.out.print(a[i] + " ");
}
}
}
其中对算法的改进,主要是减少了其位置的调换次数,也就是减少了变量的使用数量,从空间资源上进行了优化。