选择排序法:
重复执行N-1次下述处理:
1、找出未排序部分最小值的位置minj
2、将minj位置的元素与未排序部分的起始元素交换
#include<stdio.h>
int selectionSort(int a[],int n)
{
int i,j,t,sw=0,minj;
for(i=0;i<n-1;i++)
{
minj=i;
for(j=i;j<n;j++)
{
if(a[j]<a[minj]) minj=j;
}
t=a[i];
a[i]=a[minj];
a[minj]=t;
if(i!=minj) sw++;
}
return sw;
}
int main()
{
int a[100],n,i,sw;
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
sw=selectionSort(a,n);
for(i=0;i<n;i++)
{
if(i>0)printf(" ");
printf("%d",a[i]);
}
printf("\n");
printf("%d\n",sw);
return 0;
}
选择排序算法详解
本文介绍了一种简单直观的排序算法——选择排序,并提供了详细的实现步骤与C语言代码示例。该算法通过多次查找未排序部分的最小元素并将其置于正确位置来完成整个数组的排序。
2070

被折叠的 条评论
为什么被折叠?



