问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

C语言高手请回答我几个问题,关于数组排序问题

发布网友 发布时间:2022-04-29 14:55

我来回答

4个回答

热心网友 时间:2023-10-13 05:24

第一个问题,数组名本身是一个地址,即指针值,该地址为数组第一个元素的地址,该指针的第i个偏移就是第i+1个元素的地址,如a=&a[0]; (a+1)=&a[1]
所以准确来说,应该是把数组的首地址,和需要操作的元素个数,作为实参传入函数
第二个问题,
for(i=0;i<n-1;i++){//n个元素,排n-1轮
//1 选择:从乱序a[i]-a[n-1]中
// 选择最大值元素
max_id=i;
for(j=i+1;j<n;j++){
if(a[max_id]<a[j])
max_id=j;
}
//2 交换:乱序a[i]-a[n-1]中
//最大值元素与乱序中首个元素交换
tmp=a[i];
a[i]=a[max_id];
a[max_id]=tmp;
}

这是选择排序法,
刚进入循环,max_id为第一个元素下标,j 为与下标为max_id的元素比较大小,的元素的下标
所以此时j=i+1表示第二个元素,那第二个元素与第一个元素比较
max_id为较大值的下标
然后j++,拿第三个元素与第一个元素比较
依次至最后一个元素,选出最大的元素值,然后与第一个元素值交换
比如int a[5]={1,4,2,3,5}
a[0]比a[1]小,则max_id=1, 然后阿 a[1]比a[2]大 还是max_id=1,最后a[4]最大,max_id=4
for(j=i+1;j<n;j++)执行完毕,执行交换部分的语句
交换a[0]和a[4],此时顺序为5.4.2.3.1
然后继续for(i=0;i<n-1;i++)循环,i=1,max_id为第二个元素下标,从a[1]开始,拿a[2]与a[1]比
总之是先找出最大的,放在第一位,再找第二大的,放在第二位,依次可得从大到小的排序

最后,建议主函数写成
int main(){
sortTest();
return 0;
}
因为需要返回值给系统表明调用主函数结束

热心网友 时间:2023-10-13 05:25

前者正确。
后者:d_sort()函数是选择排序,每次从未排序序列中选择一个最大(最小)的值加入到已排序序列中。由于是原地排序,a数组中0~i-1是已排序序列,要从剩下部分(即i~n-1)选择一个最值,加入到已排序序列中(事实上的实现是将这个最值加到i的位置。之后已排序序列是0~i,最后最外层循环i++使下次操作时的已排序序列为0~i-1)。而for(j=i+1;j<n;j++)从i+1开始,是因为之前已将i位提出(max_id=i),之后从i~n-1中找最值,只需从i+1开始一一与a[i]比较。一旦a[j]比a[i]更优,则交换两者,此时a[i]已为新值(即i~j中的最优值),不断重复,从而使a[i]为i~n-1中最优值。
i不断增1,则每个a[i]都是剩余序列中的最优,则最终结果就是一个排好序的序列。

热心网友 时间:2023-10-13 05:25

sortText里面的d_sort(s,10),表示调用函数,只把元素的值传过去,名称传不过去。

for(j=i+1;j<n;j++),比较元素时从下一个开始比较,自身就不用比较了,就是冒泡排序,不知道你懂不?

热心网友 时间:2023-10-13 05:26

写错了吧
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
雄安 为什么涨 中国对沙特,中国入球了吗 国足vs沙特首发是什么时候? 中国对沙特谁进的球 中国沙特阵容 河北雄县为什么这么火 河北雄县为什么火了 雄县 为什么突然这么火 为什么雄安新区这么火 总是听说好白菜都让猪拱了,到底是什么意思 怎么根据ACF和PACF判断是否为平稳数列 计算机程序语言包括哪几个基本算法? 如图,如何通过ACF和PACF判断sarima的系数 皆成梦幻想到无非二三更时无长少总是凡功名睡至一百年后俱是古人选八个词组成一副对联 手持CFA证书是一种什么感受 百年之后具是古人上一句是气啥 在一颗具有5层的满二叉树中,结点总数为【】 怎么看ACF图和PACF图 将整数数组按照堆排序的方式原地进行升序排列,请问在第一轮排序结 在备考CFA的时候,每天都学到很晚,好不容易学完,就想着休息,看到有人建议要每天总结,有必要吗? CFA学习心得 C语言:若原始记录接近正序或反序,则选用堆排序,若初始记录无序则最... 列表对象的sort()方法用来对列表元素进行原地排序,该函数返回值为 用公牛双控开关安装楼梯上下怎么接线 单片机 试编程将内部RAM50H~70中的数据由大到小进行原地排列 排序算法最快的是哪种说说原理,哪些是不用申请额外空间的 这是公牛双控开关,线怎么接啊? 常用的原址排序算法有那哪些? 新型农村社会养老保险制度是强制的吗? 原地排序的排序 睡至二三更时,凡功名皆成幻境,想到一百年后,无少长俱是古人。把上联二字和下联一字去掉可以更简洁吗?_百度问一问 怎样用ACF和PACF图 确立arima模型 古人一百年称什么年 懂C++的请进,有关于快速排序的疑问 祖国发展我成长的诗歌(3-4分钟) 我为什么要考CFA 超级敷衍的学习心得 古人于为学终身与之俱是什么意思? 图中的序列是白噪声吗?白噪声序列怎么检验,检验原理是什么? 考CFA(特许金融分析师)需要什么条件?? 同时有什么学习心得吗? 有没有不用事先录音也可以变音的变声器 spss 的时间序列ACF和PACF图,判断p,q 有没有那种可以直接变声不需要录音的变声器,手机能用的? 请问下怎么用SPSS建立ARIMA模型预测某个地区未来几年的GDP发展速度? 如何备考CFA? SPSS中判断ACF和PACF图,差分p,d,q 求问大神acf,pacf 图怎么看,想确定arch模型的阶数 怎么通过acf图,pacf图判断p,d,q BBSKY黄鹤影院无法收看 怎样检查半自动洗衣机的排水口? 古人于为学,终身与之俱是什么意思?