本帖最后由 赵家阳 于 2012-9-7 14:01 编辑
首先lz,你的这个排序小程序,并不需要定义max变量,即便在chang() 时,交换的不应该是max,而是数组内部的元素。
其次,随着排序的进行,max保存的值将会越来越小,因为每排序一次,较大值都沉淀一次,而max这次保存的值会覆盖上一次的值,造成max的值到最后在越来越小。
再之,即便用max来实现交换,那么交换前的数组元素array[array.length-i-1],有没有在交换后被存放到数组中?
交换时,只需数组内部的两个元素交换即可。。。。。
这是我改的,希望有帮助:
public static void main(String[] args){
int[] ar = {23,8,98,83,1};
mySort(ar);
printArray(ar); //输出:[1, 8, 23, 83, 98]
}
public static void mySort(int[] array)
{
//int max = 0;
for (int i = 0; i < array.length-1; i++)
{
for (int j = 0; j < array.length-i-1; j++)
{
if(array[j]>array[j+1]){
//max = array[j];//记住本次循环的最大值
change(array,j,j+1);//交换一次
//System.out.println(max); 可以用输出来查看
}
}
}
//System.out.println(max);
}
private static void change(int[] array,int i, int j) { //交换位置
// TODO Auto-generated method stub
int temp = array;
array = array[j];
array[j] = temp;
}
public static void printArray(int[] arr){ //打印数组元素
System.out.print("[");
for(int x=0;x<arr.length;x++)
{
if(x!=arr.length-1){
System.out.print(arr[x]+", ");
}else{
System.out.println(arr[x]+"]");
}
}
} |