2.選擇排序
2.1.基本思想:
每一趟從待排序的數據元素中選出最小(或最大)的一個元素,順序放在已排好序的數列的最後,直到全部待排序的數據元素排完。
2.2.排序過程:
【示例】:
初始關鍵字 [49 38 65 97 76 13 27 49]
第一趟排序後 13 [38 65 97 76 49 27 49]
第二趟排序後 13 27 [65 97 76 49 38 49]
第三趟排序後 13 27 38 [97 76 49 65 49]
第四趟排序後 13 27 38 49 [49 97 65 76]
第五趟排序後 13 27 38 49 49 [97 97 76]
第六趟排序後 13 27 38 49 49 76 [76 97]
第七趟排序後 13 27 38 49 49 76 76 [ 97]
最後排序結果 13 27 38 49 49 76 76 97
2.3.程序實現
/// <summary>
/// 選擇排序
/// </summary>
/// <param name="dblArray"></param>
private static void SelectSort(ref double[] dblArray)
{
for(int i =0 ; i< dblArray.Length; i++)
{
double MinValue = dblArray[i] ;
int MinValueIndex = i ;
for(int j = i; j< dblArray.Length; j++)
{
if(MinValue > dblArray[j] )
{
MinValue = dblArray[j] ;
MinValueIndex = j ;
}
}
ExchangeValue(ref dblArray[i], ref dblArray[MinValueIndex]);
}
}
/// <summary>
/// 交換數據
/// </summary>
/// <param name="A"></param>
/// <param name="B"></param>
private static void ExchangeValue(ref double A , ref double B)
{
double Temp = A ;
A = B ;
B = Temp ;
}