All Downloads are FREE. Search and download functionalities are using the official Maven repository.

it.unimi.dsi.fastutil.ArraysTest Maven / Gradle / Ivy

The newest version!
package it.unimi.dsi.fastutil;

import static org.junit.Assert.assertTrue;
import it.unimi.dsi.fastutil.ints.AbstractIntComparator;
import it.unimi.dsi.fastutil.ints.IntArrays;
import it.unimi.dsi.fastutil.ints.IntArraysTest;

import java.util.Random;

import org.junit.Test;

public class ArraysTest {


	private static void testMergeSort(final int x[]) {
		testMergeSort(x, 0, x.length);
	}

	private static void testMergeSort(final int x[], int from, int to) {
		Arrays.mergeSort(from, to, new AbstractIntComparator() {
			private static final long serialVersionUID = 1L;

			@Override
			public int compare(int k1, int k2) {
				return Integer.compare(x[k1], x[k2]);
			}
		}, new Swapper() {
			@Override
			public void swap(int k1, int k2) {
				final int t = x[k1];
				x[k1] = x[k2];
				x[k2] = t;
			}
		});
		for(int i = to - 1; i-- != from;) assertTrue(x[i] <= x[i + 1]);
	}

	@Test
	public void testMergeSort() {
		testMergeSort(new int[] { 2, 1, 0, 4 });
		testMergeSort(new int[] { 2, -1, 0, -4 });
		testMergeSort(IntArrays.shuffle(IntArraysTest.identity(100), new Random(0)));

		int[] t = new int[100];
		Random random = new Random(0);
		for(int i = t.length; i-- != 0;) t[i] = random.nextInt();
		testMergeSort(t);
		t = new int[100000];
		random = new Random(0);
		for(int i = t.length; i-- != 0;) t[i] = random.nextInt();
		testMergeSort(t);
		for(int i = 100; i-- != 10;) t[i] = random.nextInt();
		testMergeSort(t, 10, 100);
		for(int i = t.length; i-- != 0;) t[i] = random.nextInt() & 0xF;
		testMergeSort(t);

		t = new int[10000000];
		random = new Random(0);
		for(int i = t.length; i-- != 0;) t[i] = random.nextInt();
		testMergeSort(t);
	}

	private static void testQuickSort(final int x[]) {
		testQuickSort(x, 0, x.length);
	}

	private static void testQuickSort(final int x[], int from, int to) {
		Arrays.quickSort(from, to, new AbstractIntComparator() {
			private static final long serialVersionUID = 1L;

			@Override
			public int compare(int k1, int k2) {
				return Integer.compare(x[k1], x[k2]);
			}
		}, new Swapper() {
			@Override
			public void swap(int k1, int k2) {
				final int t = x[k1];
				x[k1] = x[k2];
				x[k2] = t;
			}
		});
		for(int i = to - 1; i-- != from;) assertTrue(x[i] <= x[i + 1]);
	}

	@Test
	public void testQuickSort() {
		testQuickSort(new int[] { 2, 1, 0, 4 });
		testQuickSort(new int[] { 2, -1, 0, -4 });
		testQuickSort(IntArrays.shuffle(IntArraysTest.identity(100), new Random(0)));

		int[] t = new int[100];
		Random random = new Random(0);
		for(int i = t.length; i-- != 0;) t[i] = random.nextInt();
		testQuickSort(t);
		t = new int[100000];
		random = new Random(0);
		for(int i = t.length; i-- != 0;) t[i] = random.nextInt();
		testQuickSort(t);
		for(int i = 100; i-- != 10;) t[i] = random.nextInt();
		testQuickSort(t, 10, 100);
		for(int i = t.length; i-- != 0;) t[i] = random.nextInt() & 0xF;
		testQuickSort(t);

		t = new int[10000000];
		random = new Random(0);
		for(int i = t.length; i-- != 0;) t[i] = random.nextInt();
		testQuickSort(t);
	}

	private static void testParallelQuickSort(final int x[]) {
		testParallelQuickSort(x, 0, x.length);
	}

	private static void testParallelQuickSort(final int x[], int from, int to) {
		Arrays.parallelQuickSort(from, to, new AbstractIntComparator() {
			private static final long serialVersionUID = 1L;

			@Override
			public int compare(int k1, int k2) {
				return Integer.compare(x[k1], x[k2]);
			}
		}, new Swapper() {
			@Override
			public void swap(int k1, int k2) {
				final int t = x[k1];
				x[k1] = x[k2];
				x[k2] = t;
			}
		});
		for(int i = to - 1; i-- != from;) assertTrue(x[i] <= x[i + 1]);
	}

	@Test
	public void testParallelQuickSort() {
		testParallelQuickSort(new int[] { 2, 1, 0, 4 });
		testParallelQuickSort(new int[] { 2, -1, 0, -4 });
		testParallelQuickSort(IntArrays.shuffle(IntArraysTest.identity(100), new Random(0)));

		int[] t = new int[100];
		Random random = new Random(0);
		for(int i = t.length; i-- != 0;) t[i] = random.nextInt();
		testParallelQuickSort(t);
		t = new int[100000];
		random = new Random(0);
		for(int i = t.length; i-- != 0;) t[i] = random.nextInt();
		testParallelQuickSort(t);
		for(int i = 100; i-- != 10;) t[i] = random.nextInt();
		testParallelQuickSort(t, 10, 100);
		for(int i = t.length; i-- != 0;) t[i] = random.nextInt() & 0xF;
		testParallelQuickSort(t);

		t = new int[10000000];
		random = new Random(0);
		for(int i = t.length; i-- != 0;) t[i] = random.nextInt();
		testParallelQuickSort(t);
	}

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy