按升序对数组的元素进行排序

时间:2015-11-01 13:57:00

标签: java arrays sorting

我试图按升序对数组进行排序。由于某种原因,它只执行一次for循环。为什么在一切都被排序之前它不会继续下去?

它是一项任务,所以我不允许使用现有的排序方法。我自己应该写这个方法。

public class Sudoku {
    public static void main(String[] args) {
        int[] a = { 1, 4, 3, 5, 2 };
        System.out.println(Arrays.toString(sortArray(a)));
    }

    public static int[] sortArray(int[] nonSortedArray) {
        int[] sortedArray = new int[nonSortedArray.length];
        int temp;

        for (int i = 0; i < nonSortedArray.length - 1; i++) {
            if (nonSortedArray[i] > nonSortedArray[i + 1]) {
                temp = nonSortedArray[i];
                nonSortedArray[i] = nonSortedArray[i + 1];
                nonSortedArray[i + 1] = temp;
                sortedArray = nonSortedArray;
            }
        }

        return sortedArray;
    }
}

5 个答案:

答案 0 :(得分:3)

public static int[] sortArray(int[] nonSortedArray) {
        int[] sortedArray = new int[nonSortedArray.length];
        int temp;
        for (int j = 0; j < nonSortedArray.length - 1; j++) {// added this for loop, think about logic why do we have to add this to make it work

        for (int i = 0; i < nonSortedArray.length - 1; i++) {
            if (nonSortedArray[i] > nonSortedArray[i + 1]) {
                temp = nonSortedArray[i];
                nonSortedArray[i] = nonSortedArray[i + 1];
                nonSortedArray[i + 1] = temp;
                sortedArray = nonSortedArray;

            }
        }
        }
        return sortedArray;
    }

输出: [1,2,3,4,5]

//making use of j

public static int[] sortArray(int[] nonSortedArray){
    int[] sortedArray = new int[nonSortedArray.length];
    int temp;
    for (int i = 0; i <= nonSortedArray.length; i++) 
    {
        for (int j = i+1; j < nonSortedArray.length; j++)
        {
            if (nonSortedArray[i] > nonSortedArray[j]) 
            {
                temp = nonSortedArray[i];
                nonSortedArray[i] = nonSortedArray[j];
                nonSortedArray[j] = temp;
                sortedArray = nonSortedArray;
            }
        }
    }
    return sortedArray;
}

答案 1 :(得分:1)

 arr = new int[Item];
  Arrays.sort(arr);

在java中内置函数以按升序排序数组。

答案 2 :(得分:0)

您正尝试使用单个循环对数组进行排序。您将需要两个循环来确保元素按排序顺序。

public static int[] sortArray(int[] nonSortedArray) 
{
    int[] sortedArray = new int[nonSortedArray.length];
    int temp;
    for (int i = 0; i < nonSortedArray.length-1; i++) 
    {
        for (int j = i+1; j < nonSortedArray.length; j++)
        {
            if (nonSortedArray[i] > nonSortedArray[j]) 
            {
                temp = nonSortedArray[i];
                nonSortedArray[i] = nonSortedArray[j];
                nonSortedArray[j] = temp;
                sortedArray = nonSortedArray;
            }
        }
    }
    return sortedArray;
}

答案 3 :(得分:0)

这将按升序对数组进行排序

int arr[]={33,3,4,5,1};
Arrays.sort(arr);
System.out.println(Arrays.toString (arr));

输出将: - [1,3,4,5,33]

答案 4 :(得分:0)

按升序排列数组

private static int[] sort(int[] array) {
        int[] new_array = new int[array.length];
        int count=0;

        for (int i=0; i<array.length; i++) {
            for(int j=i+1; j<array.length+i;j++) {
                if(array[i]>=array[j%array.length])
                    count++;
            }

            for(int loc=count; loc>0;loc--) {
                if(new_array[loc]==0)
                {
                    new_array[loc]=array[i];
                    break;
                }
            }
            count=0;                            
        }

        return new_array;
    }