选择排序
选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。 选择排序是不稳定的排序方法。
一、算法流程
二、复杂度
选择排序的时间复杂度的平均是O(n^2),是选择排序的最差时间复杂度是O(n^2),空间复杂度是O(1)
三、稳定性
该算法是不稳定的
四、代码实现
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<assert.h>
#include<math.h>
#include<malloc.h>
void swap(int *a, int *b)
{
int c;
c = *b;
*b = *a;
*a = c;
}
void SelectSort(int *s, int len)
{
int i;
int j;
int k;
for (i = 0; i<len - 1; i++)
{
k = i;
for (j = i + 1; j<len; j++)
{
if (s[k]>s[j])
{
k = j;
}
}
if (k != i)
{
swap(&s[i], &s[k]);
}
}
}
void Print(int *s, int len)
{
int i;
for (i = 0; i<len; i++)
{
printf("%d ", s[i]);
}
printf("\n");
}
int main()
{
int s[] = { 25, 78, 58, 99, 105, 254, 763, 365, 47, 33, 10, 87 };
int len = sizeof(s) / sizeof(s[0]);
SelectSort(s, len);
Print(s, len);
return 0;
}
五、执行结果