(final boolean useKeys, final boolean reverse,
final boolean stable)
| 684 | |
| 685 | |
| 686 | protected void sortImpl(final boolean useKeys, final boolean reverse, |
| 687 | final boolean stable) { |
| 688 | Sort s = new Sort() { |
| 689 | @Override |
| 690 | public int size() { |
| 691 | return count; |
| 692 | } |
| 693 | |
| 694 | @Override |
| 695 | public int compare(int a, int b) { |
| 696 | long diff = 0; |
| 697 | if (useKeys) { |
| 698 | diff = keys[a].compareToIgnoreCase(keys[b]); |
| 699 | if (diff == 0) { |
| 700 | diff = values[a] - values[b]; |
| 701 | } |
| 702 | } else { // sort values |
| 703 | diff = values[a] - values[b]; |
| 704 | if (diff == 0 && stable) { |
| 705 | diff = keys[a].compareToIgnoreCase(keys[b]); |
| 706 | } |
| 707 | } |
| 708 | if (diff == 0) { |
| 709 | return 0; |
| 710 | } else if (reverse) { |
| 711 | return diff < 0 ? 1 : -1; |
| 712 | } else { |
| 713 | return diff < 0 ? -1 : 1; |
| 714 | } |
| 715 | } |
| 716 | |
| 717 | @Override |
| 718 | public void swap(int a, int b) { |
| 719 | LongDict.this.swap(a, b); |
| 720 | } |
| 721 | }; |
| 722 | s.run(); |
| 723 | |
| 724 | // Set the indices after sort/swaps (performance fix 160411) |
| 725 | resetIndices(); |
| 726 | } |
| 727 | |
| 728 | |
| 729 | /** |
no test coverage detected