标题:指向指针的指针排序
只看楼主
ZZCCY
Rank: 1
等 级:新手上路
帖 子:87
专家分:0
注 册:2006-5-1
 问题点数:0 回复次数:9 
指向指针的指针排序

原题:
用指向指针的指针的方法对10个整数排序并输入。要求将排序单独写成一个函数。
请问以下两种Sort排序方法有什么区别哪中方法更好一点,请高手指点,多谢啊


主程序:
main()
{
int a[10];
int *num[10];
void Sort();
int i,**p;
p=num;
for(i=0;i<10;i++)
{
num[i]=&a[i];
scanf("%d",&a[i]);
}
Sort(p);
for(i=0;i<10;i++)
printf("%d ",**(p+i));
}

两个函数分别是:
void Sort(int **p)/*1、交换指针的指针排序法*/
{
int i,j,t;
for(i=0;i<10;i++)
for(j=i+1;j<10;j++)
if(**(p+i)>**(p+j))
{
t=**(p+i);
**(p+i)=**(p+j);
**(p+j)=t;
}
}


void Sort(int **p)/*2、交换指针排序法*/
{
int i,j,*t;
for(i=0;i<10;i++)
for(j=i+1;j<10;j++)
if(**(p+i)>**(p+j))
{
t=*(p+i);
*(p+i)=*(p+j);
*(p+j)=t;
}

}

[此贴子已经被作者于2006-5-6 18:24:27编辑过]

搜索更多相关主题的帖子: 指针 Sort int 函数 void 
2006-05-06 18:05
ZZCCY
Rank: 1
等 级:新手上路
帖 子:87
专家分:0
注 册:2006-5-1
得分:0 
今天人怎么这么少呢

程序 是一门语言的艺术,讲究学练读写!
2006-05-06 21:51
论坛
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:1372
专家分:0
注 册:2006-3-27
得分:0 
大哥啊,指针和叔祖只是看起来不同,在内存中都是一样的,非要用指针

日出东方,唯我不败! 做任何东西都是耐得住寂寞,任何一个行业要有十年以上的积累才能成为专家
2006-05-06 22:01
ZZCCY
Rank: 1
等 级:新手上路
帖 子:87
专家分:0
注 册:2006-5-1
得分:0 
哈哈 练习啊,用熟了之后就不用了

程序 是一门语言的艺术,讲究学练读写!
2006-05-06 22:15
论坛
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:1372
专家分:0
注 册:2006-3-27
得分:0 

两个函数分别是:
void Sort(int **p)/*1、交换指针的指针排序法*/
{
int i,j,t;
for(i=0;i<10;i++)
for(j=i+1;j<10;j++)
if(**(p+i)>**(p+j))
{
t=**(p+i);
**(p+i)=**(p+j);
**(p+j)=t;
}
}


for(i=0;i<10;i++)


下标超了


日出东方,唯我不败! 做任何东西都是耐得住寂寞,任何一个行业要有十年以上的积累才能成为专家
2006-05-06 22:22
ZZCCY
Rank: 1
等 级:新手上路
帖 子:87
专家分:0
注 册:2006-5-1
得分:0 
5楼的意思是?
不过执行可以啊

程序 是一门语言的艺术,讲究学练读写!
2006-05-06 23:03
论坛
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:1372
专家分:0
注 册:2006-3-27
得分:0 
可以运行,但你下标过头了

日出东方,唯我不败! 做任何东西都是耐得住寂寞,任何一个行业要有十年以上的积累才能成为专家
2006-05-06 23:23
soft_wind
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:1430
专家分:0
注 册:2006-4-5
得分:0 
以下是引用ZZCCY在2006-5-6 18:05:00的发言:

原题:
用指向指针的指针的方法对10个整数排序并输入。要求将排序单独写成一个函数。
请问以下两种Sort排序方法有什么区别哪中方法更好一点,请高手指点,多谢啊


主程序:
main()
{
int a[10];
int *num[10];
void Sort();
int i,**p;
p=num;
for(i=0;i<10;i++)
{
num[i]=&a[i];
scanf("%d",&a[i]);
}
Sort(p);
for(i=0;i<10;i++)
printf("%d ",**(p+i));
}

两个函数分别是:/*这种方法在排序的同时把数组a[]的元素也排序了,你输出整个数组的时候是排序好了的*/
void Sort(int **p)/*1、交换指针的指针排序法*/
{
int i,j,t;
for(i=0;i<10;i++)
for(j=i+1;j<10;j++)
if(**(p+i)>**(p+j))
{
t=**(p+i);
**(p+i)=**(p+j);
**(p+j)=t;
}
}

/*这种方法并未对数组a[]的元素排序,只是对指向数组的指针进行排序,你输出指针数组是排序好了的,但当你直接输出数组时,还是原样子的*/
void Sort(int **p)/*2、交换指针排序法*/
{
int i,j,*t;
for(i=0;i<10;i++)
for(j=i+1;j<10;j++)
if(**(p+i)>**(p+j))
{
t=*(p+i);
*(p+i)=*(p+j);
*(p+j)=t;
}

}


至于哪个好,就要看你具体要怎么用了.


对不礼貌的女生收钱......
2006-05-07 09:49
仁者无敌
Rank: 1
等 级:新手上路
帖 子:199
专家分:0
注 册:2006-3-5
得分:0 
以下是引用ZZCCY在2006-5-6 18:05:00的发言:

原题:
用指向指针的指针的方法对10个整数排序并输入。要求将排序单独写成一个函数。
请问以下两种Sort排序方法有什么区别哪中方法更好一点,请高手指点,多谢啊


主程序:
main()
{
int a[10];
int *num[10];
void Sort();
int i,**p;
p=num;
for(i=0;i<10;i++)
{
num[i]=&a[i];
scanf("%d",&a[i]);
}
Sort(p);
for(i=0;i<10;i++)
printf("%d ",a[i] ); /*把**(p+i)换成a[i]后,第二个就不管用了!*/
}

两个函数分别是:
void Sort(int **p)/*1、交换指针的指针排序法*/
{
int i,j,t;
for(i=0;i<10;i++)
for(j=i+1;j<10;j++)
if(**(p+i)>**(p+j))
{
t=**(p+i);
**(p+i)=**(p+j);
**(p+j)=t;
}
}


void Sort(int **p)/*2、交换指针排序法*/
{
int i,j,*t;
for(i=0;i<10;i++)
for(j=i+1;j<10;j++)
if(**(p+i)>**(p+j))
{
t=*(p+i);
*(p+i)=*(p+j);
*(p+j)=t;
}

}



I am a programmer !
2006-05-07 11:15
ZZCCY
Rank: 1
等 级:新手上路
帖 子:87
专家分:0
注 册:2006-5-1
得分:0 

这道题我明白了
谢谢各位的顶力帮助尤其是 soft_wind 和 忍者无敌谢谢你们


程序 是一门语言的艺术,讲究学练读写!
2006-05-07 13:01



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-62212-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.055820 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved