-5

バブル ソート プログラムを作成しようとしています。エラーが表示されますが、理由がわかりません?私はJavaが初めてです

public static  void main(String[] args) {
    int []arr={12,23,43,34,3,6,7,1,9,6};
        {  
              int temp;
              for (int i=0;i<arr.length;i++)
              {  
                for (int j=0;j<arr.length-i;j++ )
                {
                  if (arr[j]>arr[j+1])
                 {  
                     temp=arr[j];
                     arr[j+1]=arr[j];
                     arr[j+1]=temp;
                  }
                }
              } 
            }
        for(int i=0; i<arr.length; i++)
         {
             System.out.print(arr[i] + " ");
         }
    }
4

5 に答える 5

3

エラーは何ですか?

私はそれだと思いIndexOutOfBoundsExceptionますか?おそらく、 when 、 whenをif使用するステートメントです。j + 1j == arr.length - 1i == 0

宿題なので、修正はお任せします。

于 2012-09-09T14:33:32.877 に答える
1

このコードを試してください......

public class TestBubbleSort {
    public static void main(String[] args) {
        int unsortedArray[] = {10, 97, 6, 23, 0, -45, 697, -1000, 1, 0}; //Random set of numbers for example.
        int i;

        bubbleSort(unsortedArray, unsortedArray.length); //Pass the array to be sorted and its length.

        System.out.println("After sorting, the list elements are: "); //Just to show you it worked. :)

        for(i=0; i<unsortedArray.length; i++) {
            System.out.print(unsortedArray[i] + " ");
        }
    }

    private static void bubbleSort(int[] unsortedArray, int length) {
        int temp, counter, index;

        for(counter=0; counter<length-1; counter++) { //Loop once for each element in the array.
            for(index=0; index<length-1-counter; index++) { //Once for each element, minus the counter.
                if(unsortedArray[index] > unsortedArray[index+1]) { //Test if need a swap or not.
                    temp = unsortedArray[index]; //These three lines just swap the two elements:
                    unsortedArray[index] = unsortedArray[index+1];
                    unsortedArray[index+1] = temp;
                }
            }
        }
    }
}
于 2012-09-09T14:32:08.703 に答える
0

このコードを試してみてください。順序が逆ですが、アイデアが得られます。

public class SortArray 
{
    public static void main(String[] args)
    {
        int[] arr={4,6,4,2,764,23,23};
        sort(arr);
    }
    static void sort(int[] arr)
    {
        int k;
        for(int i=0;i<arr.length;i++)
        {
            for(int j=i;j<arr.length-1;j++)
                {
                    if(arr[i]<arr[j+1])
                    {
                        k=arr[j+1];
                        arr[j+1]=arr[i];
                        arr[i]=k;
                    }
                }
            System.out.print(arr[i]+" ");
        }   
    }
}
于 2013-09-11T14:25:33.050 に答える
0
 public static void main(String[] args) {
        //insert random value in array
        Scanner sc=new Scanner(System.in);
        System.out.println("no of element");
        int noEle=sc.nextInt();
        int[] eleArr=new int[noEle] ;//storing element in this array
        for(int i=0;i<noEle;i++)
        {
            eleArr[i]=sc.nextInt();//enter element for storing 
        }
        for(int i=0;i<eleArr.length;i++)
        {
            for(int j=0;j<eleArr.length-1;j++)
        {
            if(eleArr[j]>eleArr[j+1])
            {//nothing but swaping logic without taking third variable
                eleArr[j]=eleArr[j]+eleArr[j+1];
                eleArr[j+1]=eleArr[j]-eleArr[j+1];
                eleArr[j]=eleArr[j]-eleArr[j+1];
            }
        }
        }
        //getting sorted elemen as bubblesort
        for(int i=0;i<noEle;i++)
        {
            System.out.print(eleArr[i]+" ");  
        }
        System.out.println();
    }
于 2014-02-26T06:39:56.797 に答える