第1个回答 2009-07-23
import java.util.Arrays;
/**
* 你想做一个冒泡排序是吧, 我把你的代码改了一点儿, 基本保持你的风格不变,只是我把它封装到了一个 特定的方法中,
* 这样就不用分的在编译的时候添加参数那么麻烦了(这里完全了为了我个人的方便)
*
* @author ajax_2003
* @version 1.0, 2009-7-23
*
*/
public class Testpaixu {
public static void main(String[] args) {
String[] str = { "2", "5", "1", "4", "7", "0", "9", "3", "8", "6" };
Testpaixu.sort(str);
System.out.println(Arrays.toString(str));
}
/**
* 排序算法
*
* @param nums
*/
private static void sort(String[] nums) {
// 你这里有一个很严重的问题,就是你这个数组中所有元素的默认值都是0,这样就会影响到你后面的排序功能
// 所以我建议你还是不要用这个临时数组了, 直接如下操作就可以了
// int[] a = new int[nums.length];
for (int i = 0, a; i < nums.length; i++) {
// a = Integer.parseInt(nums[i]);
// for (int j = i + 1; j < nums.length; j++) {
for (int j = i, b; j < nums.length; j++) {
// b = Integer.parseInt(nums[j]);
String c;
// 这里截然是字符串比较,那么就直接用这个好了
if (nums[i].compareTo(nums[j]) > 0) {
c = nums[i];
nums[i] = nums[j];
nums[j] = c;
}
}
// System.out.print(a[i]);
}
}
}
第2个回答 2009-07-23
public class Testpaixu{
public static void main(String[] args){
int[] a = new int[args.length];
for (int i=0;i<args.length;i++){
a[i] = Integer.parseInt(args[i]);
for (int j=i+1;j<args.length;j++){
a[j] = Integer.parseInt(args[j]);
int c =0;
if(a[i]>a[j]){
c=a[i];
a[i]=a[j];
a[j]=c;
}
}
for(int i=;i<args.length;i++)
System.out.print(a[i]);
}
}
}
第3个回答 2009-07-22
a[i]的取值写在循环外面
因为这样第二次循环的时候比较的不是第一次循环后的值
第4个回答 2009-07-23
你的错在于你的赋值和排序混到一起了.
循环了一次后,排了一次后,你又赋值把排好数字给覆盖了.
你把赋值单提出来,在排你的序就正确了.
自己想想吧.
int[] a = new int[args.length] ;
//赋值
for( int i = 0 ; i < args.length ; i ++ )
a[i] = Integer.parseInt(args[i]);
//排序
for (int i=0;i<a.length;i++){
for (int j=i+1;j<a.length;j++){
int c =0;
if(a[i]>a[j]){
c=a[i];
a[i]=a[j];
a[j]=c;
}
}
System.out.print(a[i]);
}
}
在就提点建议:
在java里的排序都现成的方法:数组工具类java.util.Arrays,用这个类的sort()方法.集合用java.util.Collections类,这些一般能满足你的需求.本回答被提问者采纳