简单选择排序
代码
//简单选择
public static void SimpleSelectSort(int[] data)
{
int temp=0;
int t=0;
for(int i=0;i<data.Length-1;i++)
{
t=i;
for(int j=i+1;j<data.Length;j++)
{
if(data[t]>data[j])
{
t=j;
}
}
if(t!=i)
{
temp=data[i];
data[i]=data[t];
data[t]=temp;
}
}
for(int i=0;i<data.Length;i++)
{
Console.WriteLine(data[i].ToString());
}
}
public static void SimpleSelectSort(int[] data)
{
int temp=0;
int t=0;
for(int i=0;i<data.Length-1;i++)
{
t=i;
for(int j=i+1;j<data.Length;j++)
{
if(data[t]>data[j])
{
t=j;
}
}
if(t!=i)
{
temp=data[i];
data[i]=data[t];
data[t]=temp;
}
}
for(int i=0;i<data.Length;i++)
{
Console.WriteLine(data[i].ToString());
}
}
在简单选择排序中,第一次排序要进行n-1次比较,第二次排序要进行n-2次比较,第n-1排序要进行1次比较,所以总的比较次数为:
在各次排序时,记录的移动次数最好0次,最坏为3次,所以,总的移动次数最好为0次,最坏为3次。因此,简单选择排序算法的时间复杂度为O(n2)。
简单选择排序算法只需要一个辅助空间用于交换记录,所以,简单选择排序算法是一种稳定的排序方法。