java - 如何从数组中分离负数和正数?

标签 java arrays algorithm big-o

我想在数组中分隔负数和正数。

例如,如果我的数组有 10 个值,它们是 {-8,7,3,-1,0,2,-2,4,-6,7},我希望新修改的数组是 { -6,-2,-1,-8,7,3,0,2,4,7}。

我想在 O(n^2) 中执行此操作,并且我也编写了代码。但我没有得到正确的输出。我的代码哪里错了?

import java.util.Random;
public class Apples {

    public static void main(String[] args) {
        Random randomInteger=new Random();
        int[] a=new int[100];
        for(int i=0;i<a.length;i++)
        {
            a[i]=randomInteger.nextInt((int)System.currentTimeMillis())%20 - 10;
        }
        for(int i=0;i<a.length;i++)
        {
            if(a[i]<0)
            {
                int temp=a[i];
                for(int j=i;j>0;j--)
                {
                    a[j]=a[j-1];
                    j--;
                }
                a[0]=temp;
            }
        }
        for(int i=0;i<a.length;i++)
        {
            System.out.print(a[i]+" ");
        }

    }
}

最佳答案

你有两个 j-- 而你只需要一个,所以删除其中一个。

for(int j=i;j>0;j--)
 {
     a[j]=a[j-1];
     // remove j--; from here
 }

关于java - 如何从数组中分离负数和正数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35835555/

相关文章:

java - 在多个 jvm 实例中运行 java 代码

java - Java中二维数组的声明和格式

java - RuntimeException : android. view.InflateException:二进制 XML 文件行 #8:膨胀类 fragment 时出错

c# - LINQ字典到锯齿状数组?

c - 初始化一个结构对象数组,这些对象之前存储在结构变量中

algorithm - 在指定位置最佳切割木棒

c++ - 从一组坐标中确定将形成一条线的点

java - 如何仅当某个字符在匹配中出现 n 次时才匹配?

algorithm - 用quick hull算法计算凸包

c - 为什么这个程序没有得到任何输出来使用递归对数组进行冒泡排序?