| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 585 人关注过本帖
标题:[求助]做个算法题
取消只看楼主 加入收藏
chenkuanyi
Rank: 1
等 级:新手上路
帖 子:32
专家分:0
注 册:2007-4-21
收藏
 问题点数:0 回复次数:1 
[求助]做个算法题

编写一个函数实现将数组中>=0的数组元素排列在数组前部,而将<0的数组元素排列在数组后部,并满足以下要求:
(1) 不要对数组元素进行排序,只需要满足归类要求即可
(2) 尽可能降低算法复杂度
(3) 数组元素只能在数组内部进行移动、交换等操作(可借用临时变量),但不能使用另外定义的数组变量


我是在数组头尾各定义一个指针,当前面的指针<0,后面的指针>0时就交换,
但实现时有错,请大家给我改一下啊,照我的算法思路;

# include <iostream>
using namespace std;

void main()
{
int a[] = {1, 3, -7, -4, 4, 8, -5, 33, 55, -6};
int *p = NULL;
int *q = &a[9];

for ( p = &a[0]; p != q; p++)
{
if ((*p) < 0)
{
while (p != q)
{
if ( *q > 0)
{
int temp = 0;
temp = *p;
*p = *q;
*q = temp;
q--;
break;
}
else
{
q--;
}
}
}
}
for (int i = 0; i < 10; i++)
{
cout << a[i] << "\t";
}
system("pause");
}

这时有时正确的:
E:\>11
1 3 55 33 4 8 -5 -4 -7 -6

但当我改变数组时,有时会有系统计错误,

[此贴子已经被作者于2007-5-18 22:36:48编辑过]

搜索更多相关主题的帖子: 算法 元素 变量 指针 定义 
2007-05-18 22:27
chenkuanyi
Rank: 1
等 级:新手上路
帖 子:32
专家分:0
注 册:2007-4-21
收藏
得分:0 

谢谢啊,
大家能指出我的那个算法错在那里吗?
照着我的步骤改一改把
谢谢啊

2007-05-19 09:39
快速回复:[求助]做个算法题
数据加载中...
 
   



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

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