与冒泡排序相比,选择排序的平均时间复杂度比冒泡排序稍高。
基本思想:
每一趟从待排序的元素中选出最小(或者最大)的一个元素顺序放在已排好序的数列的最后,直到全部待排序的数据元素排完。
选择排序是不稳定的排序方法,N个记录的文件的直接选择排序可经过N-1趟直接选择排序得到有序结果。
示例如下:
定义数组a[]={13,4,8,2,11,67,0}
第一趟:a[]={0,4,8,2,11,67,13}
第二趟: a[]={0,2,8,4,11,67,13}
第三趟:a[]={0,2,4,8,11,67,13}
第四趟:a[]={0,2,4,8,11,67,13}
第五趟:a[]={0,2,4,8,11,67,13}
第六趟:a[]={0,2,4,8,11,13,67}
算法描述如下:
![](/Images/OutliningIndicators/ContractedBlock.gif)
Code
int[] intArray = { 49, 38, 65, 97, 76, 13, 27 };
protected void Page_Load(object sender, EventArgs e)
{
int[] result = Sort(intArray);
String output = "";
for (int j = 0; j < result.Length; j++)
{
output += output.Equals("") ? result[j].ToString() : "," + result[j].ToString();
}
Response.Write(output);
}
public int[] Sort(int[] intArray)
{
int i, j, t;
for (i = 0; i < intArray .Length- 1; i++)
{
for (j = i + 1; j < intArray.Length; j++)
{
if (intArray[i] > intArray[j])
{
t = intArray[i];
intArray[i] = intArray[j];
intArray[j] = t;
}
}
}
return intArray;
}