本帖最后由 不胖的胖子 于 2013-5-19 08:23 编辑
/*
其实这是个排序问题。
为了说明这个问题,我把你的代码简化下:
直接在int 数组中进行,其实效果一样。
你的排序主体部分如下:
for(int x = 0;x < ch.length;x++){
for(int y = 0;y < ch.length-1;y++){
if(Integer.parseInt(ch[x])>Integer.parseInt(ch[y])){
String temp = ch[x];
ch[x]=ch[y];
ch[y]=temp;
}
}
*/
import java.util.Arrays;
public class Test
{
public static void main(String args[]){
int[] arr = new int[]{45,65,1,7,34,-2};//还是排你原来的数组
/*
沿用你的排序方式
*/
for(int i=0;i<arr.length;i++){
sop("第"+(i+1)+"轮比较");
for(int j=0;j<arr.length-1;j++){
if(arr<arr[j]){ //改成小于号就可以完成升序排列
int temp = arr;
arr = arr[j];
arr[j] = temp;
}
sop(Arrays.toString(arr));
}
}
sop(Arrays.toString(arr));//使用Arrays工具类,便于查看数组内容
}
public static void sop(Object obj){
System.out.println(obj);
}
}
/*
我对排序过程进行了一个跟踪,目前
不知道你这属于啥排序。我现在了解原理
的排序方式也就选择和冒泡排序。对比下
你的排序是比较慢的一种方式。后面会给出
原因。
---------- 运行java程序 ----------
第1轮比较
[45, 65, 1, 7, 34, -2]
[65, 45, 1, 7, 34, -2]
[65, 45, 1, 7, 34, -2]
[65, 45, 1, 7, 34, -2]
[65, 45, 1, 7, 34, -2]
第2轮比较
[45, 65, 1, 7, 34, -2]
[45, 65, 1, 7, 34, -2]
[45, 65, 1, 7, 34, -2]
[45, 65, 1, 7, 34, -2]
[45, 65, 1, 7, 34, -2]
第3轮比较
[1, 65, 45, 7, 34, -2]
[1, 45, 65, 7, 34, -2]
[1, 45, 65, 7, 34, -2]
[1, 45, 65, 7, 34, -2]
[1, 45, 65, 7, 34, -2]
第4轮比较
[1, 45, 65, 7, 34, -2]
[1, 7, 65, 45, 34, -2]
[1, 7, 45, 65, 34, -2]
[1, 7, 45, 65, 34, -2]
[1, 7, 45, 65, 34, -2]
第5轮比较
[1, 7, 45, 65, 34, -2]
[1, 7, 45, 65, 34, -2]
[1, 7, 34, 65, 45, -2]
[1, 7, 34, 45, 65, -2]
[1, 7, 34, 45, 65, -2]
第6轮比较
[-2, 7, 34, 45, 65, 1]
[-2, 1, 34, 45, 65, 7]
[-2, 1, 7, 45, 65, 34]
[-2, 1, 7, 34, 65, 45]
[-2, 1, 7, 34, 45, 65]
[-2, 1, 7, 34, 45, 65]
输出完成 (耗时 0 秒) - 正常终止
*/
|