/*选择排序核心思想假设第一个值为最值,让其与元素其他值进行比较,
选取一个最值,以后每次从未排序元素选取一个最值*/
#include <stdio.h>
void F_Sort(int Array[],int Num);//排序主函数
void main()
{
int Num2;
int Array[10]={0};
printf("请输入要排序的数字");
for(Num2 = 0;Num2 < sizeof(Array)/4 - 1;Num2++)
{
scanf("%d",&Array[Num2]);
}
F_Sort(Array , sizeof(Array)/4 - 1);
}
void F_Sort(int Array[],int Num)
{
int i,j,Mark ,Center;
for (i = 0;i < Num;i++)
{
Mark=i;//假设下标为i的元素是一个最值,将i的下标赋值给MARK,用下面的for循环进行比较.
for(j = i+1;j < Num;j++)//此for循环每次从待排序元素中选取一个最值,将其下标保存在中间变量MARK中
{
if(Array[j] > Array[Mark])
{
Mark=j;
}
}
if(Mark != i)//将每次循环结束后最值得下标与i比较如果不同则交换,
{
Center = Array[Mark];//例如第一次循环后取得得最值下标与下标i的值0比较,不同的话交换Array[Mark]与Array[0]的值.
Array[Mark] = Array[i];
Array[i] = Center;
}
}
for(i = 0;i < Num;i++)
{
printf("%d\t",Array[i]);
}
}
选择排序
最新推荐文章于 2022-08-23 16:09:03 发布