SortThis=new int[]
{
111,120,013,121,
29,.45,53,67,
71,2,405,76,
23,17,91,83,
29,91,17,53,
48,51,21,0,
};public void SortArray()
{
char c;
       For(int a=0;a<num_elements-1;a++)
       {
for(b=a;b<num_elements;b++)
{
if(SortThis[a]>SortThis(b))
{
c=SortThis[b];
SortThis[b]=SortThis[a];
SortThis[a]=c;
}

}
       }
}
请指出上述代码中的错误, 并给出解决的方案.很简单, 请各位帮帮忙.

解决方案 »

  1.   

    用java.util.Arrays.sort()方法不就行了么。
      

  2.   

    估计你学JAVA也不太久,呵呵,坚持!
      

  3.   

    SortThis[a]>SortThis(b)这句话语法错误吧,SortThis(b)怎么能使用圆括号?
      

  4.   

    public void Asort(int[] a)
       {
        int temp,j,i;
        for(i = 0;i<k.length;i++)
            for(j = i+1;j<k.length;j++)
            {
             if(k[j] < k[i])
             {
             temp = k[j];
             k[j] = k[i];
             k[i] = temp;
             }
            }
       }
      

  5.   

    冒泡排序:
    static int[] bubbleSort(int[] a) {
    boolean change = false;
    for (int i = 0; i < a.length; i++) {
    for (int j = 0; j < a.length - i - 1; j++)
    if (a[j] > a[j + 1]) {
    int temp = a[j + 1];
    a[j + 1] = a[j];
    a[j] = temp;
    change = true;
    }
    if (!change)
    break;
    }
    return a;
    }
      

  6.   

    恩,基本上用Arrays.sort(int[] ints)可以搞定,如果非要学习的话,可以参考我下面的补充。 /*
     * 冒泡排序,又称气泡排序,是一种简单的排序方法。其基本思想是通过相邻元素 
     * 之间的比较和交换使得排序码较小的元素逐渐从底部移向顶部,即从下标较大的
     * 单元移向下标较小的单元,就向水底下的气泡一样逐渐向上冒。
     */
    public void fun09_02bubble_sort() {
    int[] a = { 7, 5, 2, 6, 8, 74, 1, 25, 69, 8 };
    Conica.print(a);
    for (int i = 0; i < a.length - 1; i++) {
    for (int j = a.length - 1; j > i; j--) {
    if (a[j] < a[j - 1]) {
    int temp = a[j];
    a[j] = a[j - 1];
    a[j - 1] = temp;
    }
    }
    Conica.print(a);
    //1,2,5,6,7,8,8,25,69,74
    }
    } /*
     * 沉石排序,又称沉没排序,是一种简单的排序方法。其基本思想是通过相邻元素 
     * 之间的比较和交换使得排序码较大的元素逐渐从顶部移向底部,即从下标较小的
     * 单元移向下标较大的单元,就向往水里扔石头一样逐渐往下沉。
     */
    public void fun09_04sink_stone() {
    int[] a = { 7, 5, 2, 6, 8, 74, 1, 25, 69, 8 };
    Conica.print(a);
    for (int i = 0; i < a.length - 1; i++) {
    for (int j = 0; j < a.length - i - 1; j++) {
    if (a[j] > a[j + 1]) {
    int temp = a[j];
    a[j] = a[j + 1];
    a[j + 1] = temp;
    }
    }
    Conica.print(a);
    //1,2,5,6,7,8,8,25,69,74
    }
    }
    /*
     * 插入排序,其方法是:把数组a[0]-a[n-1]中n个元素看作为一个有序表和
     * 一个无序表,开始时有序表中只有一个元素a[0](一个元素自然为有序的),
     * 无序表中包含有n-1个元素a[1]-a[n-1],以后每次从无序表 中取出第一个
     * 元素,把它插入到前面有序表中的合适位置,使之成为一个新的有序表,这样
     * 有序表就增加了一个元素,无序表就减少了一个元素;经过n-1次后,有序表
     * 中含有n个元素,无序表变为一个空表,整个数组就成为了一个有序表。
     */
    public void fun09_01insert_sort() {
    int[] a = { 7, 5, 2, 6, 8, 74, 1, 25, 69, 8 };
    Conica.print(a);
    for (int i = 1; i < a.length; i++) {
    int x = a[i],j;
    for(j=i-1;j>=0;j--){
    if(x<a[j]){
    a[j+1] = a[j];
    }else{
    break;
    }
    }
    a[j+1] = x;
    Conica.print(a);
    //1,2,5,6,7,8,8,25,69,74
    }
    } /*
     * 直接选择排序,它是一种简单的排序方法。它每次从待排序的区间中选择出
     * 具有最小排序码的元素,把该元素与该区间的第一个元素交换位置。
     */
    public void fun09_03direct_select_sort() {
    int[] a = { 7, 5, 2, 6, 8, 74, 1, 25, 69, 8 };
    Conica.print(a);
    for (int i = 0; i < a.length-1; i++) {
    int min = a[i];
    for(int j = i+1;j<a.length - 1; j++){
    if(a[j]<min){
    int temp = a[j];
    a[j] = min;
    min = temp;
    }
    }
    a[i] = min;
    Conica.print(a);
    //1,2,5,6,7,8,8,25,69,74
    }
    }

      

  7.   

    临时变量c应该声明为int 型
      

  8.   


    建议看一下java类库的算法
      

  9.   

    刚才用你的那个程序,发现int[]里边居然有.45这样的数据,
    不知道是你故意放的,还是不小心敲错了
     For不能大写,应该是for,另外注意java的变量命名规则,一般的几个字母合成的变量名,则首词的第一个字母小写
    另外你的选择排序概念有问题
    不是for(int i=0;i<len-1;i++)
          for(int j=0;j<len;j++)
    而是for(int i=0;i<len-1;i++)
           for(int j=i+1;j<len;j++)
    还有既然sortThis数组是int型,中间变量c 就应该是int型,我不知道你是不是想试试把int转储在char中会不会有精度损失之类的怪异想法,但是放在此处实在不宜
    我匆匆写了一个,也不知道合不合你的意import java.security.InvalidParameterException;public class ChooseSort {
    public final static int NON_DESCENDING = 0; public final static int NON_ASCENDING = 1; private static boolean isNeededChange(int i, int j, int type) {
    if (NON_DESCENDING == type)
    return i > j;
    if (NON_ASCENDING == type)
    return i < j;
    throw new InvalidParameterException();
    } private static void swap(int[] a, int i, int j) {
    int temp = a[i];
    a[i] = a[j];
    a[j] = temp;
    } public static void sort(int[] a,int type) {
    for (int i = 0; i < a.length - 1; i++) {
    for (int j = i + 1; j < a.length; j++) {
    if (isNeededChange(a[i], a[j], type)) {
    swap(a, i, j);
    }
    }
    }
    } public static void main(String[] args) {
    int[] test = getTestData();
    show(test,"the array before sort:");
    ChooseSort.sort(test,NON_DESCENDING);
    show(test,"the array after sort:");
    } private static int[] getTestData() { return new int[] { 111, 120, 013, 121, 29, 45, 53, 67, 71, 2, 405, 76,
    23, 17, 91, 83, 29, 91, 17, 53, 48, 51, 21, 0, };
    }
    static void show(int[] a,String s) {
    System.out.println(s);
    for (int i = 0; i < a.length; i++) {
    System.out.print(a[i] + " "); }
    System.out.println();
    }}