伪代码依旧在notepad++上写的。
SelectSort (input ele[],input length)
for i <- 1 to length step 1
min <- i
for j <- i+1 to length step 1
if ele[j] < ele[min]
min <- j
end if
swap(ele[j],ele[min])
end
c++版本,vs2010上运行。
void selectsort(int a[],int length)
{
int i,j;
for (i= 0;i < length;i++)
{
int min = i;
for (j = i + 1; j < length; j++)
if (a[j] < a[min])
min = j;
swap (&a[i],&a[min]);
}
}
swap函数
void swap(int *a,int *b)
{
int c;
c = *a;
*a = *b;
*b = c;
}
python上的实现
def SelectSort(array):
for i in range(len(array)):
min = i
for j in range(i+1,len(array)):
if (array[j] < array[min]):
min = j
array[min],array[i] = array[i],array[min]
选择排序的关键在于记录index,将index记录后,在一趟之后进行swap,比冒泡排序少很多次swap操作。