选择排序法
原理:
选择法循环过程与冒泡法一致,它还定义了记号min=i,然后依次把a[min]同后面的元素比较,若a[min]>a[j],则使k=j. 最后看看k=i是否还成立,不成立则交换a[k], a[i],这样就比冒泡法省下许多无用的交换,提高了效率。
void choise (int *a, int n) /*选择排序函数*/
{
int i, j, min, temp;
for (i = 0; i <= n; i++)
{
min = i;
//给记号赋值
for (j = i+1; j < n; j++)
{
if (a[min] > a[j])
min = j;
//min总是指向最小元素
}
if (i != min)
//当min!=i才交换,否则a[i]即为最小
{
temp = a[i];
a[i] = a[min];
a[min] = temp;
}
}
}
附上输出函数和主函数
void print(int *a, int n)
{
int i;
for (i = 0; i < n; i++)
printf ("%5d", a[i]);
printf ("\n");
}
int main()
{
int a2[] = {13,0,5,8,1,7,21,50,9,2};
printf("according to choise:");
choise(a2,10);
print(a2, 10);
return 0;
}