/*
作者:秦时小
专业:计算机科学与技术
学校:咸阳师范学院 2013级
时间:2016.01.27
程序名称:选择排序算法的实现
程序功能:
*/
#include <stdio.h>
#include <stdbool.h>
/*
函数名称:选择排序
函数描述:
min用来记录值最小的元素的下标,初始假定当前第一个元素为最小值
,然后依次向后与每一个元素做比较,当找到更小的元素时,更新min
的值为当前最小值的下标,外层循环每一趟找到一个最小值,最终实现
排序。
*/
void selectSort(int* begin,int* end,bool (*compare)(int,int))
{
for(int i=0;i<(end-begin)-1;i++)
{
int min=i;
for(int j=i+1;j<(end-begin);j++)
{
if(!compare(*(begin+min),*(begin+j)))
{
min=j;
}
}
if(i!=min)//如果i不等于min,说明找到了新的最小值或者最大值
{ //需要更新
int temp=*(begin+i);
*(begin+i)=*(begin+min);
*(begin+min)=temp;
}
}
}
//升序
bool compareASC(int num1,int num2)
{
return num1<num2;
}
//降序
bool compareDESC(int num1,int num2)
{
return num1>num2;
}
int main(void)
{
int arr[]={9,6,3,4,8,2,7,5,1};
selectSort(arr,arr+9,compareASC);//升序
//selectSort(arr,arr+9,compareDESC);//降序
for(int i=0;i<9;i++)
{
printf("%d ",arr[i]);
}
printf("\n");
return 0;
}
选择排序算法的实现
最新推荐文章于 2020-12-23 11:17:13 发布