#include<stdio.h>
void method(int a[], int n);//声明一个函数method
int main()
{
int a[] = { 3,2,1,4,5,6,9,5,8,7,2,5,4 };//数组初始化
int n = (sizeof(a) / sizeof(a[0]));//数组长度
method(a, n);//将a数组的首地址与数组长度传递给函数method
system("pause");//可以删去
return 0;
}
void method(int a[], int n)//函数method的定义
{
int i, q;
int k,m;//中间变量
printf("排序前的数组为:");
for (i = 0; i < n; i++)
{
printf("%d ", a[i]);
}
printf("\n");
printf("/*************************************************/\n");
for ( i = 0; i < n-1; i++)//遍历整个数组
{
printf("将第%d个数赋值给中间变量k\n", i+1);
k = i;//将数组中第i个元素的下标赋值给k(初始化k)
for (q = i+1; q < n; q++)//遍历第i个元素后的数组
{
printf("比较a[%d]a[%d]的大小\n", k, q);
if (a[k]>a[q])//比较数组中第k个元素与第q个元素的值
{
printf("因为%d>%d 所以将变量k记为%d\n",a[k],a[q],q);
k = q;//如果a[k]>a[q] 则将下标q赋值给k
}
}
m = a[k];
a[k] = a[i];
a[i] = m;//将数组中第i个后的元素的最小值a[k]与a[i]交换(从前往后逐个固定)
printf("交换a[%d]与a[%d]\n", i, k);
printf("此时前%d个数已经排序完成\n",i+1);
printf("/*************************************************/\n");
}
printf("此时前%d个数已经排序完成\n", i + 1);
printf("选择排序结束\n");
printf("/*************************************************/\n");
//选择排序结束
printf("\n");
printf("排序结果为:");
for ( i = 0; i < n; i++)
{
printf("%d ", a[i]);
}//打印排序后的整个数组
printf("\n");
}
选择排序 C语言描述
最新推荐文章于 2023-03-20 01:02:49 发布