一,概述
(1)简单选择排序是一种选择排序。
(2)选择排序:每趟从待排序的记录中选出关键字最小的记录,与当前位置的数值进行交换,直到所有数据有序排列完成。
二。算法思想
(1)从待排序序列中,找到关键字最小的元素;
(2)如果最小元素不是待排序序列的第一个元素,将其和第一个元素互换;
(3)从余下的N - 1个元素中,找出关键字最小的元素,
重复(1),(2)步,到结束。
例如,一组无序数列:9 1 2 5 7 4 8 6 3 5
三.代码
#include<stdio.h>
//每次和待排序 序列的 后面的元素 找到比当前数字 小的数值 进行交换
void Select(int *arr ,int len)
{
int minindex = 0;
int temp = 0;
for(int i = 0;i<len ;i++)
{
minindex = i;//设当前为最小
for(int j =i+1 ;j<len; j++ ) //从i后面的数据找 ,因为前面已经有序
{
if(arr[j]<arr[minindex]) ////arr[j](i 后面的数据)与mindex 进行比较 如果arr[j] 更小,交换数据
{
temp =arr[j];
arr[j] = arr[minindex];
arr[minindex] = temp;
}
}
}
}
void show(int *arr,int len)
{
for(int i =0;i<len;++i)
{
printf("%d\t",arr[i]);
}
}
int main()
{
int arr[]={7,3,4,6,4,2.876,3,53,346};
int len = sizeof(arr)/sizeof(arr[0]);
Select(arr,len);
show(arr,len);
getchar();
return 0;
}
四.时间复杂度和空间复杂度
由于要对元素进行交换改变,简单选择排序是一种不稳定的算法;
由于需要一个Temp来保存交换的临时变量,所以空间复杂度为O(1);