選擇排序

選擇排序
大致思想就是:一組數據,我先選定第一個數是最小的,然後依次在除了第一個數以外的數據中遍歷,找到比當前認定的最小值還要小的數,然後記錄他的下標,待一次循環結束後,交換位置。

此時這組數據的第一個元素就是名副其實的最小的,然後換下一個,假定第二個元素是最小的,在重複上述操作,直到全部有序。

package sort;

/*
 * 選擇排序
 */
public class selectSort
{
    private int [] array = { 9 , 3 , 4 , 2 , 6 , 8 , 5 } ;
    private int out ;//用來記錄每次從哪開始(起點)
    private int in ;//用來來回遍歷
    private int min ;//存放一次循環中找到的最小數字的下標
    private int temp ;//存放待交換的值

    public void sort ()
    {
        for ( out = 0 ; out < array.length ; ++ out )
        {
            min = out ;//每次循環的開始,先假定起點就是最小的數字,用它來和遍歷中的數據作比較
            temp = array [min] ;

            //循環查找最小值,找到最小的就將其下標記住待循環結束,在交換
            for ( in = out + 1;  in < array.length ; ++ in )
            {
                if ( array [in] < array [min] )
                min = in ;
            }

            //交換,將循環中找到最小值放到起點,起點裏存放的數放到最小值位置
            array [out] = array [min] ;
            array [min] = temp ;
        }
    }

    public void display ()
    {
        for ( int i = 0 ; i < array.length ; ++ i )
        {
            System.out.print ( array [i] + " " );
        }
        System.out.println ();
    }
}
發佈了43 篇原創文章 · 獲贊 25 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章