将数组从最小到最大排序(不是冒泡排序)

时间:2014-02-04 21:25:32

标签: arrays sorting

我需要查看array(ar[]),找到最小值(最小值),将其转移到index[0] ar2[],然后将ar[]处的数字替换为1000所以我可以循环并连续将其他最低数字放在ar2[]中。

public class Sort
{
    public static void main (String args[])
    {

        int ar[] = {6,7,2,1,5,9,4,2,3};
        int i, j;
        int ar2[] = new int[9];
        final int ONE = 1000;

        for(i=0; i < ar.length; i++)
        { 
            int smallest = ar[0];

            for(j=1; j<ar2.length; j++)
            {
                if (ar[i]<ar[j])
                {
                    smallest = ar[i];
                    ar[i] = ONE
                }

                ar2[j] = smallest;
            }
        }

        for(j=0;j<ar2.length;j++)
        {
            System.out.println("ar2[" + j + "] = " + ar[j]);
        }
    }
}                   

1 个答案:

答案 0 :(得分:0)

以下是您的排序代码的修复:但这不是很好的算法。它具有O(n ^ 2)复杂度,但其他具有O(N * log2N)。看看here了解详情。

for (i = 0; i < ar.length; i++) {
    int smallest = ar[i];
    int smallestIndex = i;
    for (j = 0; j < ar2.length; j++) {
        if (ar[j] < smallest) {
            smallest = ar[j];
            smallestIndex = j;
        }
    }
    ar2[i] = smallest;
    ar[smallestIndex] = ONE;
}