(final boolean useKeys, final boolean reverse,
final boolean stable)
| 698 | |
| 699 | |
| 700 | protected void sortImpl(final boolean useKeys, final boolean reverse, |
| 701 | final boolean stable) { |
| 702 | Sort s = new Sort() { |
| 703 | @Override |
| 704 | public int size() { |
| 705 | return count; |
| 706 | } |
| 707 | |
| 708 | @Override |
| 709 | public int compare(int a, int b) { |
| 710 | long diff = 0; |
| 711 | if (useKeys) { |
| 712 | diff = keys[a].compareToIgnoreCase(keys[b]); |
| 713 | if (diff == 0) { |
| 714 | diff = values[a] - values[b]; |
| 715 | } |
| 716 | } else { // sort values |
| 717 | diff = values[a] - values[b]; |
| 718 | if (diff == 0 && stable) { |
| 719 | diff = keys[a].compareToIgnoreCase(keys[b]); |
| 720 | } |
| 721 | } |
| 722 | if (diff == 0) { |
| 723 | return 0; |
| 724 | } else if (reverse) { |
| 725 | return diff < 0 ? 1 : -1; |
| 726 | } else { |
| 727 | return diff < 0 ? -1 : 1; |
| 728 | } |
| 729 | } |
| 730 | |
| 731 | @Override |
| 732 | public void swap(int a, int b) { |
| 733 | LongDict.this.swap(a, b); |
| 734 | } |
| 735 | }; |
| 736 | s.run(); |
| 737 | |
| 738 | // Set the indices after sort/swaps (performance fix 160411) |
| 739 | resetIndices(); |
| 740 | } |
| 741 | |
| 742 | |
| 743 | /** |
no test coverage detected