永发信息网

用指针方法对10个整数按由大到小顺序排序的源程序,我不明白定义的sort函数中for循环里面的内容。

答案:4  悬赏:0  手机版
解决时间 2021-03-31 11:10
用指针方法对10个整数按由大到小顺序排序的源程序,我不明白定义的sort函数中for循环里面的内容。
最佳答案
#include
int main()
{
void sort(int x[],int n);
int i,*p,a[10];
p = a;
printf("please enter 10 integer numbers:");
for(i = 0;i < 10;i++) scanf("%d",p++);
p = a;
sort(p,10);
for(p = a,i = 0;i < 10;i++) {
printf("%d ",*p);
p++;
}
printf("\n");
return 0;
}

void sort(int x[],int n) { //选择排序
int i,j,k,t;
for(i = 0;i < n - 1;i++) {
k = i; // 假定索引为i的元素最大
for(j = i + 1;j < n;j++) // 从索引为i的下一个元素开始比较
if(x[j] > x[k]) k = j; // 如果还有更大的,则记录这个元素的索引
if(k != i) { // 确实有更大的元素,则进行交换
t = x[i];
x[i] = x[k];
x[k] = t;
}

}
}追问你好,你的那个“确实”太精辟了!还有几个问题,麻烦了,问题1、我觉得第内嵌的for循环只包括
for(j = i + 1;j < n;j++)
if(x[j] > x[k]) k = j;
外循环的第一次(i=0)结束后,再进行
if(k!=i)
{
t=x[i];
x[i]=x[k];
x[k]=t;
}

是这样吗?
问题2:你是怎么判断一个循环的结束的,就好比这道题内嵌的这个循环。
多谢。追答1、是的。
2、外循环遍历n - 1个元素,内循环每次都比前一次循环少一次。追问索引改变会改变数组元素中的值吗???!!!
全部回答
这个sort,冒泡排序清晰明了,是你的sort难看懂而已
void sort(int a[],int n)
{
int t;
for(int j=0;jfor(int i=0;i if(a[i] {
t=a[i];
a[i]=a[i+1];
a[i+1]=t;
}
}
冒泡排序的过程是两两比较大小第一趟选出最小的放在首位第二次选出次小放在第二位直到排序结束。你说的K=J不是结束而是找到了要进行前后替换得数的下标,K=J就是把要替换得下标现赋给K然后进行下面的替换:T=a[i]
#include
int main()
{
void sort(int x[],int n);
int i,*p,a[10];
p=a;
printf("please enter 10 integer numbers:");
for(i=0;i<10;i++)
scanf("%d",p++);
p=a;
sort(p,10);
for(p=a,i=0;i<10;i++)
{
printf("%d ",*p);
p++;
}
printf("\n");
return 0;
}
void sort(int x[],int n)
{
int i,j,k,t; // k用来指向最大的一个数
for(i=0;i {
k=i; //初始化k,指向第一个数,开始时,只有一个数,所以最大,
//下边的程序是把第i个数与第j个数作比较,把数向前挪动
for(j=i+1;j if(x[j]>x[k]) //如果第j个数大于前边所有数中的最大数
k=j; //则k指向第j个最大的数
if(k!=i) //如果上边的if成立,即前边所有数中的最大数没有第j个大,则执行下边的程序
{
//以下程序完成将最大数放在最前边(i所指的位置),
//第一次i的循还则将最大数放在第一个位置
//第二次i的循还则将除第一次以外的最大数放在第二个位置
//。。。
t=x[i];
x[i]=x[k];
x[k]=t;
}
}
}
希望对你有帮助。。追问谢谢 你的回答非常详细 和那个精辟哥一样厉害 再帮我一下 和他同样的问题 你看一下
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
I am find.( ) you and you? 的答案谢
龙城医院周六开吗 还有哪些医院的入职体检是
银魂双六游戏中广播剧制作如何解锁高杉和神威
村里的山被挖采石怎么办举报电话多少
您的淘宝身份信息认证因证件中头像或字体模糊
关于吸烟的英语短句
坏账损失都需要提供什么资料给税务才能申报核
单选题下列属于非法侵害他人的生命健康权利应
现代人为什么压力那么大?
国航集团是个什么公司
十堰用德国菲斯曼和德国威能那个多?求大神告
温州瓯北到离龙湾有多远
关于节目百善孝为先的解说词
欧尚超市买的速冻半边鸭是速成鸭吗
许嵩跟他人合唱的全部歌名,
推荐资讯
硬币回收电话
浪潮英信np5540m3怎么装系统
高二会考只有10天复习
"黄州"一诗中江声不尽英雄恨,天地无私草木秋
有没有网站在线设计logo,生成logo免费那种
身边处处有物理,处处留心皆“学问”.观察你
其实我挺羡慕你、你可以选择爱我或不爱我,而
为什么陈皮泡起来这么苦
从吉林市到黑龙江省海伦县从哪里上高速公路
魂斗罗归来百里守约怎么玩 百里守约玩法介绍
请问专家老师黄瓜这是怎么回事?
关于保函,海牙规则和汉堡规则是如何规定的?
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?