简单选择排序
简单选择排序算法思想:
在待排序数组中选出最小的(或最大)的与第一个位置的数据交换 然后在剩下的
待排序数组中找出最小(或最大)的与第二个位置的数据交换,以此类推,直到第n-1个元素。
1、时间复杂度:O(n^2)
2、空间复杂度:O(1)
3、稳定程度:不稳定
代码示例:
#include <stdio.h>
/*简单选择排序:在待排序数组中选出最小的(或最大)的与第一个位置的数据交换 然后在剩下的
待排序数组中找出最小(或最大)的与第二个位置的数据交换,以此类推,直到第n-1个元素*/
void SelectSort(int arr[],int len)//时间复杂度O(n^2) 空间复杂度O(1) 不稳定
{
int i;
int j;
int tmp;
int min;//待排序数组中较小值的下标
for(i = 0;i < len-1;i++)
{
min = i;
for(j = i+1;j < len;++j)
{
if(arr[j] < arr[min])
{
min = j;
}
}
tmp = arr[i];
arr[i] = arr[min];
arr[min] = tmp;
}
}
void Show(int arr[],int len)
{
for(int i = 0;i < len;i++)
{
printf("%d ",arr[i]);
}
printf("\n");
}
int main()
{
int arr[] = {2,56,34,21,8,16,90,42,6};
SelectSort(arr,sizeof(arr)/sizeof(arr[0]));
Show(arr,sizeof(arr)/sizeof(arr[0]));
return 0;
}
运行结果: