簡體   English   中英

用Java對隨機數組排序

[英]Sorting a randomized array in Java

我正在嘗試制作一個用於對隨機數組進行排序的應用程序,我編寫了一些代碼,但看不到返回錯誤值的問題是什么。注意:我正在嘗試學習編程。 因此,請勿提出解決問題的完全不同的方法。 我只想看看這段代碼有什么問題,以便我可以做得更好。 RandomArrayCreator.create()返回的只是隨機排列的數字數組。

public class ArraySorter
{
public static void main(String[] args)
{
    int[] siyahi = RandomArrayCreator.create();
    int[] siralanmish = new int[siyahi.length];

    for (int i=0;i<siyahi.length;i++)
    {
        for (int j=0;j<siyahi.length;j++)
        {
            for (int k=j+1;k<siyahi.length;k++)
            {
                if (siyahi[k]<siyahi[j]) j=k;
            }
            siralanmish[i]=siyahi[j];
            siyahi[j]=siyahi.length+1;
        }
        System.out.println(siralanmish[i]);
    }
}

}

我知道您不想要建議,但無論如何我都會提供建議。

希望這會幫助您一路走好,但仍然可以讓您提出自己的解決方案。

從小到大排序。

did I have swap an element?
while I swapped an element
    assume I did not swap an element
    for element i in the array
        is i > i+1?
            if yes 
                swap the elements
                I did swap an element
            else
                do nothing

鑒於您提到的您想學習如何改進當前程序,以下是一些極簡的更改,這些更改將使您的代碼產生一個排序數組。

有關更改的一些注意事項:

1。

if (siyahi[k]<siyahi[j]) j=k;

我認為這是為了嘗試交換每個索引的值。 相反,您將k的值分配給j,這將導致整個for循環出現問題。 我將其替換為以下內容:

    if (siyahi[k]<siyahi[j]) 
    {
        int temp = siyahi[j];
        siyahi[j] = siyahi[k];
        siyahi[k] = temp;
    } 

這將創建一個臨時變量來存儲值之一,以便您可以在每個索引處交換值而不會丟失其中一個值。

2。

siralanmish[i]=siyahi[j];

替換為:

siralanmish[j]=siyahi[j];

這使您可以將相同索引中的值直接從源數組復制到目標數組。

3。

siyahi[j]=siyahi.length+1;

這段代碼只會用原始數組的length + 1值填充您的數組,而您將丟失其他值。

帶有修復程序的代碼如下:

    public class ArraySorter
    {
    public static void main(String[] args)
    {
        int[] siyahi = RandomArrayCreator.create();
        int[] siralanmish = new int[siyahi.length];

        for (int i=0;i<siyahi.length;i++)
        {
            for (int j=0;j<siyahi.length;j++)
            {
                for (int k=j+1;k<siyahi.length;k++)
                {
                    if (siyahi[k]<siyahi[j]) 
                    {
                      int temp = siyahi[j];
                      siyahi[j] = siyahi[k];
                      siyahi[k] = temp;
                    }
                }
                siralanmish[j]=siyahi[j];
            }
            System.out.println(siralanmish[i]);
        }
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM