diff options
Diffstat (limited to 'build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/internal/autotools/ui/editors/automake/TwoArrayQuickSort.java')
-rw-r--r-- | build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/internal/autotools/ui/editors/automake/TwoArrayQuickSort.java | 69 |
1 files changed, 35 insertions, 34 deletions
diff --git a/build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/internal/autotools/ui/editors/automake/TwoArrayQuickSort.java b/build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/internal/autotools/ui/editors/automake/TwoArrayQuickSort.java index dbec276fc01..719ab5f9d99 100644 --- a/build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/internal/autotools/ui/editors/automake/TwoArrayQuickSort.java +++ b/build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/internal/autotools/ui/editors/automake/TwoArrayQuickSort.java @@ -16,59 +16,60 @@ package org.eclipse.cdt.internal.autotools.ui.editors.automake; import org.eclipse.core.runtime.Assert; - /** * Quick sort to sort two arrays in parallel. */ public class TwoArrayQuickSort { - private static void internalSort(String[] keys, Object[] values, int left, int right, boolean ignoreCase) { - - int originalLeft= left; - int originalRight= right; - - String mid= keys[(left + right) >>> 1]; - do { - while (smaller(keys[left], mid, ignoreCase)) { - left++; - } - while (smaller(mid, keys[right], ignoreCase)) { - right--; - } - if (left <= right) { - String tmp= keys[left]; - keys[left]= keys[right]; - keys[right]= tmp; - - Object tmp2= values[left]; - values[left]= values[right]; - values[right]= tmp2; - - left++; - right--; - } + private static void internalSort(String[] keys, Object[] values, int left, int right, boolean ignoreCase) { + + int originalLeft = left; + int originalRight = right; + + String mid = keys[(left + right) >>> 1]; + do { + while (smaller(keys[left], mid, ignoreCase)) { + left++; + } + while (smaller(mid, keys[right], ignoreCase)) { + right--; + } + if (left <= right) { + String tmp = keys[left]; + keys[left] = keys[right]; + keys[right] = tmp; + + Object tmp2 = values[left]; + values[left] = values[right]; + values[right] = tmp2; + + left++; + right--; + } } while (left <= right); - + if (originalLeft < right) { - internalSort(keys , values, originalLeft, right, ignoreCase); - } + internalSort(keys, values, originalLeft, right, ignoreCase); + } if (left < originalRight) { - internalSort(keys, values, left, originalRight, ignoreCase); - } + internalSort(keys, values, left, originalRight, ignoreCase); + } } + private static boolean smaller(String left, String right, boolean ignoreCase) { if (ignoreCase) return left.compareToIgnoreCase(right) < 0; - return left.compareTo(right) < 0; + return left.compareTo(right) < 0; } + /** * Sorts keys and values in parallel. */ - public static void sort(String[] keys, Object[] values, boolean ignoreCase) { + public static void sort(String[] keys, Object[] values, boolean ignoreCase) { if (keys != null && values != null) { Assert.isTrue(keys.length == values.length); if (keys.length > 1) - internalSort(keys, values, 0, keys.length - 1, ignoreCase); + internalSort(keys, values, 0, keys.length - 1, ignoreCase); } else { if (keys != null || values != null) Assert.isTrue(false, "Either keys or values in null"); //$NON-NLS-1$ |