@C语言大神们,请分析下面程序运行流程,谢谢!

BinaryEarth 2020-09-16 08:53:51
#include<stdio.h>
#include<string.h>
void sort(int arr[],int n)

{
int i, j, k, t;
for(i=0;i<n-1;i++)
{
k = i;
for (j = i + 1; j < n; j++)
if (arr[j] < arr[k]) k = j;
t = arr[k];
arr[k] = arr[i];
arr[i] = t;
}
}
void main()
{
int i;
int a[] = { 5,6,8,3,4,2 };
for (i = 0; i < 6; i++)
printf("%d", a[i]);
printf("\n");
sort(a, 6);
for (i = 0; i < 6; i++)
printf("%d", a[i]);
...全文
171 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
自信男孩 2020-09-17
  • 打赏
  • 举报
回复
void sort(int arr[],int n)
{
int i, j, k, t;
for(i=0;i<n-1;i++)
{
k = i;
for (j = i + 1; j < n; j++)
if (arr[j] < arr[k])
k = j;
if (k != i) {
t = arr[k];
arr[k] = arr[i];
arr[i] = t;
}
}
}

加上一个判断,提高一下效率,目的是减少无用的交换次数
qybao 2020-09-16
  • 打赏
  • 举报
回复
你是想分析整个main函数,还是想分析sort排序函数? sort排序函数是选择排序,每次从 i 位置的后面选择最小的数a[k],把它排在 i 位置。这样,就是最小的会排在0位置,第二小的会排在1位置,第三小的会排在2位置,依次类推,最终达到排序的目的。 main函数就是先打印排序前的数据,然后做排序处理,最后打印排序结果。

70,023

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧