#include <stdio.h>
#include <assert.h>
#include <string.h>
#include <stdlib.h>
#include <math.h>
#include <vld.h>
//选择排序
//算法思想:每次从待排序序列中选出最小值,与待排序序列中的第一个值进行交换,已经确定的不参与再次比较,只将待排序数据进行排序
void SelectSort(int *arr,int len)//时复O(n^2),空复O(1),不稳定, 优化——锦标排序/树排序:两两比赛,谁小谁赢
{
int tmp;
int minindex;//最小值下标
for(int i=0;i<len-1;i++)
{
int j;
minindex=i;
for(j=i+1;j<len;j++)
{
if(arr[minindex]>arr[j])//最小值大于待排序的值
{
minindex=j;
}
}
if(minindex!=i)
{
tmp=arr[i];
arr[i]=arr[minindex];
arr[minindex]=tmp;
}
}
}
void Show(int *arr,int len)
{
for(int i=0;i<len;i++)
{
printf("%d ",arr[i]);
}
printf("\n");
}
int main()
{
int arr[]={32,2,65,234,2,76,10,35,66,2,65,3,28,33,11};
SelectSort(arr,sizeof(arr)/sizeof(arr[0]));
Show(arr,sizeof(arr)/sizeof(arr[0]));
return 0;
}
排序算法(五)选择排序
最新推荐文章于 2022-11-13 20:50:57 发布