| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1350 人关注过本帖
标题:[求助2]指针,看下错哪了。
只看楼主 加入收藏
jianweichief
Rank: 1
等 级:新手上路
帖 子:80
专家分:0
注 册:2007-7-18
收藏
得分:0 
回复:(野比)最简单的方法:另建一个数组..先找最大数...
good idea!哈哈

2007-07-27 21:34
aipb2007
Rank: 8Rank: 8
来 自:CQU
等 级:贵宾
威 望:40
帖 子:2879
专家分:7
注 册:2007-3-18
收藏
得分:0 
输入10个数,找出最大数,放在第一,原来第一的在第二````依次类推。


根据这个描述,不是冒泡,而是类似选择排序,不过较之选择排序多了很多无用功:
原来第一的在第二````依次类推。
上面这个不是多余吗?不要求未排序过程有特定序,何不直接交换当前最大数和n(索引)位置数。
这样以来就是个完整的选择排序了。

Fight  to win  or  die...
2007-07-27 22:01
wtyj112
Rank: 1
等 级:新手上路
帖 子:222
专家分:0
注 册:2007-5-9
收藏
得分:0 
楼主就是要求为排序过程有特定序

计算机之路是痛苦并快乐着的!!
2007-07-28 00:28
aipb2007
Rank: 8Rank: 8
来 自:CQU
等 级:贵宾
威 望:40
帖 子:2879
专家分:7
注 册:2007-3-18
收藏
得分:0 
以下是引用wtyj112在2007-7-28 0:28:14的发言:
楼主就是要求为排序过程有特定序

[a1,a2,a3..an,b1,b2..bn](a1-an已排序)

我指的是b1-bn这部分未排序子数组。


Fight  to win  or  die...
2007-07-28 08:56
a8451727
Rank: 1
等 级:新手上路
帖 子:238
专家分:5
注 册:2007-5-22
收藏
得分:0 

哈哈,大家辛苦了。
多谢。


2007-07-28 10:18
a8451727
Rank: 1
等 级:新手上路
帖 子:238
专家分:5
注 册:2007-5-22
收藏
得分:0 

[CODE]#include<iostream>
using namespace std;
int main()
{
const int max=10;
int a[max];
int *p=a;
int i,j,value1,value2;
int index1=0,index2;
cout<<"Enter the array number:";
for(i=0;i<max;i++)
{
cin>>*(p+i);
}
value1=*p;
value2=*p;
for(i=1;i<max;i++){
if(value1<*(p+i)){
value1=*(p+i);
index1=i;
}
}
for(j=1;j<max;j++){
if(value2>*(p+j)){
value2=*(p+j);
index2=j;
}
}
cout<<value1<<' '<<value2<<endl;
for(i=index1;i>0;i--){
*(p+i)=*(p+i-1);
*(p+i-1)=value1;
}
for(j=index2;j<max;j++){
*(p+j)=*(p+j+1);
*(p+j+1)=value2;
}


for(p=a;p<(a+max);p++)
cout<<*p<<' ';
cout<<endl;
return 0;
}[/CODE]

我自己又加了个提取最小数的,但为什么最小数最后会变成10呢?无论最小那个是什么,都变成10的

[IMG]http://photo.store.qq.com/http_imgload.cgi?/rurl2=7e4fd5d9a063c878ddccf31b06203d6cbf487e558384baa859dd17418cce3ce8a0dc1b030821d5beaf5255c296c6f6ca3ce1808feefbb6c31f85f298f8d7c2333c11144b5a71965802da668b5d13816d39baf6e0[/IMG]

[IMG]http://photo.store.qq.com/http_imgload.cgi?/rurl2=51709e058777c92ca8f74543d893fa5f79c92705000621e185e6e8ed5e8170ddc8197797558dbd84b44147430070b18c9a5f5d1ac1b964a56b74a2759be86127acbaf97db97d3bbc66830ff3a635df47fa3f807c[/IMG]

2007-07-29 16:18
virusswb
Rank: 1
等 级:新手上路
威 望:1
帖 子:342
专家分:0
注 册:2005-8-6
收藏
得分:0 

兄弟啊
你的这个地方有问题
你忘了大括号了
for(i=0;i<max;i++)
{
for(j=0;j<max;j++)

k=j+1;
if(*(p+j)<*p+k)
*(p+j)=*(p+k);//这里为什么不是每次上一数覆盖下一个数?
*p=*(p+j);

}


jorden008@
2007-07-29 21:44
a8451727
Rank: 1
等 级:新手上路
帖 子:238
专家分:5
注 册:2007-5-22
收藏
得分:0 

前面的可以了,帮我看下后面那个问题啊


2007-07-29 23:18
wtyj112
Rank: 1
等 级:新手上路
帖 子:222
专家分:0
注 册:2007-5-9
收藏
得分:0 
我喜欢你的想法,可以加我qq吗?170439097
你怎么会想做这样的程序呢??挺有意思的呵呵!!

计算机之路是痛苦并快乐着的!!
2007-07-30 09:45
wtyj112
Rank: 1
等 级:新手上路
帖 子:222
专家分:0
注 册:2007-5-9
收藏
得分:0 

随便把你程序修改好了 你先自己看下 如果还不明白你那里做错了 再说

#include<iostream>
using namespace std;
int main()
{
const int max=10;
int a[max];
int *p=a;
int i,j,value1,value2;
int index1=0,index2;
cout<<"Enter the array number:";
for(i=0;i<max;i++)
{
cin>>*(p+i);
}
value1=*p;
value2=*p;
for(i=1;i<max;i++){
if(value1<*(p+i)){
value1=*(p+i);
index1=i;
}
}

for(i=index1;i>0;i--){
*(p+i)=*(p+i-1);
*(p+i-1)=value1;
}

for(j=1;j<max;j++){
if(value2>*(p+j)){
value2=*(p+j);
index2=j;
}
}
cout<<value1<<' '<<value2<<endl;

for(j=index2;j<max-1;j++){
*(p+j)=*(p+j+1);
*(p+j+1)=value2;
}

for(p=a;p<(a+max);p++)
cout<<*p<<' ';
cout<<endl;
return 0;
}


计算机之路是痛苦并快乐着的!!
2007-07-30 09:46
快速回复:[求助2]指针,看下错哪了。
数据加载中...
 
   



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

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