前面几个题目都做了,还有这个题目数组方法不会定义。5、  将数组按照升序(从小到大)进行排列的方法。测试数据:{3,10,9,2,3}用方法做,我自己要弄懂,麻烦给下代码。

解决方案 »

  1.   

    排序有很多方法啊,比如最常规的有:冒泡法、选择排序法、分组排序法楼主可以百度一下其中一个算法,然后再用JAVA来实现,这里面的JAVA语法应该不复杂吧。
      

  2.   

    希望下次楼主能独立完成!import java.util.ArrayList;
    import java.util.Arrays;public class ArraySort {
    public static void main(String[] args) {
    int[] a={3,10,9,2,3};
    Arrays.sort(a);
    for (int i = 0; i < a.length; i++) {
    System.out.println(a[i]);
    }
    }
    }测试出结果为:
    2
    3
    3
    9
    10
      

  3.   

    刚刚看到二楼说我,我很气愤于是就自己写了一个。但是运行结果不对,我刚刚是自己做的,麻烦给我批评指正,哪里到底错了? 谢谢,2楼谢谢你
    package com;public class ArrarySort {
    public int[] arrarySort(int[] arr)
    {
    for(int i=1;i<arr.length;i++)
    {
    for(int j=0;j<i;j++)

    if(arr[i]>arr[j])
    {
    arr[i]=arr[j];
    int temp=arr[i];
    arr[j]=temp;
    }


    }
    }
    return arr;
    }}package com;public class Test {
       public static void main(String[] args)
       {
       ArrarySort object1=new ArrarySort();
       int []arr1=new int[]{3,10,9,2,3};
       System.out.println(object1.arrarySort(arr1));
       
       }
    }
      

  4.   

    快速排序:
    public class QuickSort {   
        public static int[] QuickSort(int[] pData, int left, int right) {   
            int i= left, j= right;   
            int middle, strTemp;   
      
            middle = pData[(left + right) / 2];   
            do {   
                while ((pData[i] < middle) && (i < right))   
                    i++;   
                while ((pData[j] > middle) && (j > left))   
                    j--;   
                if (i <= j) {   
                    strTemp = pData[i];   
                    pData[i] = pData[j];   
                    pData[j] = strTemp;   
                    i++;   
                    j--;   
                }   
            } while (i <= j);   
            
            if (left < j) {   
                QuickSort(pData, left, j);   
            }   
      
            if (right > i)   
                QuickSort(pData, i, right);   
            return pData;   
        }   
      
        public static void main(String[] argv) {   
            int[] pData = { 3,10,9,2,3 };   
            int[] newData = QuickSort(pData, 0, pData.length - 1);   
            for(int data : newData){
             System.out.print(data+ " ");
            }
        }   
    }  
      

  5.   

    arr[i]=arr[j];
    int temp=arr[i];
    arr[j]=temp;这三行代码,你好好看看,应该怎样修改
    if(arr[i]>arr[j])
    {
        int temp=arr[i];
        arr[i]=arr[j];
        arr[j]=temp;
    }
    看看上面这三行跟你的有什么不同,你可以举个实际一点的例子。
      

  6.   

    arr[i]=arr[j];
    int temp=arr[i];
    arr[j]=temp;
    这里错了
      

  7.   


    嗯,如果知道气愤,而且自己写了一个,那说明你有能力和信心把 Java 学好,呵呵。你代码的只在一个地方错了,只需要换换位置就可以了。先看看你的代码:1. arr[i] = arr[j];
    2. int temp = arr[i];
    3. arr[j] = temp;假设 arr[i] = 3, arr[j] = 10
    执行完第一行后 arr[i] = 10, arr[j] = 10
    执行完第二行后 temp = 10, arr[i] = 10, arr[j] = 10
    执行完第三行后 temp = 10, arr[i] = 10, arr[j] = 10很显然是不正确的。需要交换两个变量的值,需要使用临时变量来接收其中的一个变量。你的代码只需要把第 2 行与第 1 行换个位置改成这样就可以了:int temp = arr[i];
    arr[i] = arr[j];                    
    arr[j] = temp;另外 if 中使用的是 arr[i] > arr[j] 因此排序结果是倒序的,如果想要顺序改成 arr[i] < arr[j] 就可以了。最后还要说一句,自己先把代码写一遍、调试一下,实在搞不明白再来发帖提问,这样对于你学习帮助比较大。
      

  8.   


    public class maopao
    {
    public static void main(String[] args)
    {
    int i,j;
    int array[]={3,10,9,2,3};
    int k=array.length;
    for(i=k-1;i>0;i--)
    for(j=0;j<i;j++)
    if(array[j]>array[j+1])
    {
    int t;
    t = array[j];
    array[j] = array[j+1];
    array[j+1] = t;
    }
    for(i=0;i<k;i++)
       System.out.print(array[i]+" ");

     }
    }
    这是用冒泡写的。
    也是新手。共同进步吧。
      

  9.   

    比较排序
    public static int[] sort(int[] ns){
    int t;
    for(int j= 0;j<ns.length;j++){
    for(int i = j+1;i<ns.length;i++){
    if(ns[i]<=ns[j]){
    t = ns[i];ns[i]=ns[j];ns[j]=t;
    }
    }
    }
    return ns;
    }
      

  10.   

    楼主是从前面开始判断了,那么arr[i]应该是最后一项,arr[i]>arr[j]是不用调换的,应该改成<
      

  11.   


    你的循环写错了 for(int j=0;j<i;j++) 改成 for(int j=i+1;j<arr.length;j++) 
      

  12.   

    典型的三行交换语句
    int temp=A[i];
    A[i]=A[j];
    A[j]=temp;
    或者可以这样,假如数组为A,则:
    A[i]=A[i]+A[j];
    A[j]=A[i]-A[j];
    A[i]=A[i]-A[j];
      

  13.   

    LZ啊,你真有福气啊,这么简单的一个问题(当然啦,是对于学过JAVA的人来说),有那么多牛人帮你解决啊。火龙哥,colsewbq等等,全是牛人啊,膜拜中。