Java Array Sort sort(final double[] data)

Here you can find the source of sort(final double[] data)

Description

Allocates new array which is sorted version of argument.

License

Open Source License

Parameter

Parameter Description
data a parameter

Return

Side Effects: none

Declaration

public static final double[] sort(final double[] data) 

Method Source Code

//package com.java2s;
/*//from www .  j a  va  2  s.  c  om
 * ====================================================
 * Copyright (C) 2013 by Idylwood Technologies, LLC. All rights reserved.
 *
 * Developed at Idylwood Technologies, LLC.
 * Permission to use, copy, modify, and distribute this
 * software is freely granted, provided that this notice
 * is preserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * The License should have been distributed to you with the source tree.
 * If not, it can be found at
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 *
 * Author: Charles Cooper
 * Date: 2013
 * ====================================================
 */

import java.util.Arrays;

public class Main {
    /**
     * Allocates new array which is sorted version of argument.
     * O(n) in the allocation and then O(n log n) in the sort.
     * Behavior should be identical to calling Arrays.sort(data.clone())
     * @param data
     * @return
     * Side Effects: none
     */
    public static final double[] sort(final double[] data) {
        final double ret[] = copyOf(data);
        Arrays.sort(ret);
        return ret;
    }

    /**
     * Behavior is identical to calling data.clone() or Arrays.copyOf(data)
     * But can be up to 30% faster if the JIT doesn't optimize those functions
     * @param data
     * @return
     */
    public static final double[] copyOf(final double[] data) {
        return copyOfRange(data, 0, data.length);
    }

    /**
     * Behavior is identical to calling data.clone() or Arrays.copyOf(data)
     * But can be up to 30% faster if the JIT doesn't optimize those functions
     * @param data
     * @return
     */
    public static final double[] copyOfRange(final double[] data, final int start, final int end) {
        if (end > data.length || start < 0)
            throw new IllegalArgumentException("Bad array bounds!");
        final double ret[] = new double[end - start];
        for (int i = 0; i < (end - start) / 3; i++) {
            final int x = i * 3;
            ret[x] = data[x + start];
            ret[x + 1] = data[x + 1 + start];
            ret[x + 2] = data[x + 2 + start];
        }
        // Don't care about extra copies if data.length%3==0
        ret[ret.length - 2] = data[end - 2];
        ret[ret.length - 1] = data[end - 1];
        return ret;
    }
}

Related

  1. sort(double[] data, boolean desc)
  2. sort(Double[] inArray)
  3. sort(double[] vector, boolean ascending)
  4. sort(double[] x)
  5. sort(E[] x, int[] w)
  6. sort(final int[] data)
  7. sort(final long[] primary, final double[] secondary)
  8. Sort(float cais[])
  9. sort(int v[], int left, int right)