简体   繁体   English

选择排序算法java

[英]selection sort Algorithm java

I was debugging my code and found a problem with my Selection Sort Algorithm. 我正在调试代码,发现选择排序算法存在问题。

The code below almost sorts it, but I cant understand why all of it is not sorted. 下面的代码几乎对它进行了排序,但是我不明白为什么所有的代码都没有排序。 have tried everything but to no avail. 尝试了一切,但无济于事。

import java.util.Random;


public class Help
{
    //private static int[] myarray=new int[20];
    private static int[] array;
    public static void main(String[] args)
    {
       array=new int[20];
        fillArrayRandom(array);

        sortAscending(array);

        ///This is the bit that does not do what it is meant to do!
        for(int i=0;i<array.length;i++)
        {
           // System.out.printf("Testing %d%n",myarray[i]);
        }

    }
    public static void fillArrayRandom(int[] array)
    {
        int i;
        for(i=0;i<array.length;i++)
        {
            array[i]=getRandomNum();
        }
    }

    public static int getRandomNum()``
    {
        Random num=new Random();
        int TestNumber=num.nextInt(2000);
        return TestNumber;
    }

    public static void sortAscending(int[] array)
    {
        int smallest;


        for(int i=0;i<array.length-1;i++)
        {
            smallest=i;

            for(int index=i+1;index<array.length;index++)
            {
                if(array[index]<array[smallest])
                    smallest =index;


               swap(i,smallest);
            }

            System.out.printf("%d%n",array[i]);

        }

    }

    public static void swap(int first,int second)
    {
        int temporary=array[first];
        array[first]=array[second];
        array[second]=temporary;
}
}

You need to swap after the inner loop has completed: 您需要在内循环完成后进行交换:

public static void sortAscending(int[] array)
{
    int smallest;


    for(int i=0;i<array.length-1;i++)
    {
        smallest=i;

        for(int index=i+1;index<array.length;index++)
        {
            if(array[index]<array[smallest])
                smallest =index;


        }
        if (i != smallest) swap(i,smallest);

        System.out.printf("%d%n",array[i]);

    }

}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM