選擇排序
大致思想就是:一組數據,我先選定第一個數是最小的,然後依次在除了第一個數以外的數據中遍歷,找到比當前認定的最小值還要小的數,然後記錄他的下標,待一次循環結束後,交換位置。
此時這組數據的第一個元素就是名副其實的最小的,然後換下一個,假定第二個元素是最小的,在重複上述操作,直到全部有序。
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 ();
}
}