VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1176|回复: 5

高手看一下!!!!!!!!

[复制链接]

3

主题

3

帖子

4.00

积分

新手上路

Rank: 1

积分
4.00
发表于 2020-3-16 19:30:01 | 显示全部楼层 |阅读模式
设有长度为n的一维整型数组A,设计一个算法,将数组中所有负数存放在数组的前部,而所有的正数存放在负数的后面.
回复

使用道具 举报

0

主题

22

帖子

18.00

积分

新手上路

Rank: 1

积分
18.00
发表于 2020-6-25 13:15:01 | 显示全部楼层
楼主没说0怎么办,暂时算是正数

void f(int a[], int n){
  int i=0,j;/*i查找正数,j查找负数*/
  while(i<n && a[i]<0)i++;/*第一个正数*/
  for(j=i+1;j<n;j++)
    if(a[j]<0){
      int temp = a[i];
      a[i] = a[j];
      a[j] = temp;
      i++;/*i和j之间都是正数,i是第一个正数*/
    }
}
回复

使用道具 举报

0

主题

1

帖子

2.00

积分

新手上路

Rank: 1

积分
2.00
发表于 2020-8-17 09:45:01 | 显示全部楼层
楼上的算法比较慢
用快速排序比较快
一个指针从前向后
另一个从后向前
可以减少穷尽量
回复

使用道具 举报

0

主题

1

帖子

2.00

积分

新手上路

Rank: 1

积分
2.00
发表于 2020-8-17 10:15:01 | 显示全部楼层
直接用插入 O(N)
回复

使用道具 举报

0

主题

1

帖子

2.00

积分

新手上路

Rank: 1

积分
2.00
发表于 2020-8-17 10:30:02 | 显示全部楼层
同意
确实是o(n)
回复

使用道具 举报

0

主题

1

帖子

2.00

积分

新手上路

Rank: 1

积分
2.00
发表于 2020-8-18 12:30:01 | 显示全部楼层
计数排序,计数范围为2(只需区分正负值即可),O(n)的复杂度
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|CopyRight © 2008-2023|verysource.com ( 京ICP备17048824号-1 )

快速回复 返回顶部 返回列表