求解算法
对N个关键字取整数值的记录序列进行整理,以使所有关键字为负值的记录排在关键字为非负值的记录前面,要求:
(1)采用顺序存储结构,至多使用一个记录的辅助存储空间;
(2)算法的时间复杂度为O(N).
各位帮帮小弟的忙,谢谢。
问题点数:40、回复次数:4Top
1 楼happydivid(泓笑)回复于 2005-12-10 21:16:59 得分 30
int array[]={};
int length=strlen(array);
int index=length;
int temp;
for (int i=0; i<length; i++ ) {
if ( array[i]<0 ) {
temp=array[i];
array[i]=array[length-index];
array[length-index]=temp;
index--;
}
}Top
2 楼happydivid(泓笑)回复于 2005-12-10 21:17:38 得分 0
如果不要求按大小排序的话,我的代码应该可以满足楼主的要求
Top
3 楼cunsh(村少)回复于 2005-12-10 21:39:42 得分 10
#include "iostream"
using namespace std;
int main(int argc, char* argv[])
{
int a[]={-1,3,5,-2,3,-1,3,33,-1};
int len = sizeof(a)/sizeof(a[0]);
int * p1 = a;
int * p2 = a + len -1;
while( p1<p2)
{
while(*p1 < 0) p1++;
while(*p2 > 0) p2--;
if(p1<p2)swap(*p1 ,*p2);
}
for(int i=0; i<len; i++)
cout << a[i] << endl;
}Top
4 楼bwmwm()回复于 2005-12-10 21:42:08 得分 0
可以满足要求了,谢谢大哥!我给分了。Top




