/*****************************************************************
** 函数说明:算法导论 选择排序
** 版 本:V1.00
** 修 改:庞辉 芜湖联大飞思卡尔工作室
** 修改日期:2011年09月24日
** 说 明:无
** 版本更新:无
******************************************************************
** 注 意:选择排序
******************************************************************/
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
/***********************************************************
** 名 称:void Selection_sort(int *in, int count)
** 功 能:选择排序
** 入口参数:in 待排序数组
** count 待排序数组大小
** 出口参数:无
** 使用说明:无
**********************************************************/
void Selection_sort(int in[], int count)
{
int i = 0;
int j = 0;
int min_count = 0;
for (i = 0; i < count - 1; i++)
{
min_count = i;
//寻找剩余数值的最小值
for(j = i + 1; j < count; j++)
{
if(in[j] < in[min_count])
{
min_count = j;
}
}
//不等时交换
if(i != min_count)
{
j = in[min_count];
in[min_count] = in[i];
in[i] = j;
}
}
}
/***********************************************************
** 名 称:int main(void)
** 功 能:主函数
** 入口参数:无
** 出口参数:无
** 使用说明:无
**********************************************************/
int main(void)
{
int i = 0;
int arr[10] = {0};
//随机数发生器的初始化函数
srand(time(NULL));
printf("原数组为:\n");
//随机赋值
for(i = 0; i < 10; i++)
{
arr[i] = rand() % 100;
}
//输出
for(i = 0; i < 10; i++)
{
printf("%5d", arr[i]);
}
printf("\n");
//选择排序
Selection_sort(arr, 10);
printf("排序数组为:\n");
for(i = 0; i < 10; i++)
{
printf("%5d", arr[i]);
}
printf("\n");
getchar();
return 0;
}