选择排序
算法思想简单描述:
在要排序的一组数中,选出最小的一个数与第一个位置的数交换;
然后在剩下的数当中再找最小的与第二个位置的数交换,如此循环
到倒数第二个数和最后一个数比较为止。
选择排序是不稳定的。算法复杂度O(n2)。
代码如下:
void Swap(int &a, int &b)
...{
int t = a;
a = b;
b = t;
}
/**//*选择排序*/
void SelectSort(int *A, int n)
...{
for(int i=1;i<n;++i)
...{
int min_index = i;
for(int j=i;j<n;++j)
...{
if(A[j]<A[min_index])
min_index = j;
}
if(A[min_index]<A[i-1])
Swap(A[min_index],A[i-1]);
}
}
void PrintArray(int data[], int n)
...{
int i;
for(i = 0; i < n; i++)
...{
printf("%d ", data[i]);
}
printf(" ");
}
void main()
...{ 
int A[] = ...{4, 1, 44, -12, 6, 125, 30};
SelectSort(A,7);
PrintArray(A,7);
}
本文介绍了一种简单的排序算法——选择排序,并提供了详细的实现代码。选择排序通过不断寻找剩余未排序元素中的最小值并将其放到已排序序列的末尾来完成排序过程。
1万+

被折叠的 条评论
为什么被折叠?



