MCPcopy Index your code
hub / github.com/processing/processing / sortImpl

Method sortImpl

core/src/processing/data/FloatDict.java:709–770  ·  view source on GitHub ↗
(final boolean useKeys, final boolean reverse,
                          final boolean stable)

Source from the content-addressed store, hash-verified

707
708
709 protected void sortImpl(final boolean useKeys, final boolean reverse,
710 final boolean stable) {
711 Sort s = new Sort() {
712 @Override
713 public int size() {
714 if (useKeys) {
715 return count; // don't worry about NaN values
716
717 } else if (count == 0) { // skip the NaN check, it'll AIOOBE
718 return 0;
719
720 } else { // first move NaN values to the end of the list
721 int right = count - 1;
722 while (values[right] != values[right]) {
723 right--;
724 if (right == -1) {
725 return 0; // all values are NaN
726 }
727 }
728 for (int i = right; i >= 0; --i) {
729 if (Float.isNaN(values[i])) {
730 swap(i, right);
731 --right;
732 }
733 }
734 return right + 1;
735 }
736 }
737
738 @Override
739 public int compare(int a, int b) {
740 float diff = 0;
741 if (useKeys) {
742 diff = keys[a].compareToIgnoreCase(keys[b]);
743 if (diff == 0) {
744 diff = values[a] - values[b];
745 }
746 } else { // sort values
747 diff = values[a] - values[b];
748 if (diff == 0 && stable) {
749 diff = keys[a].compareToIgnoreCase(keys[b]);
750 }
751 }
752 if (diff == 0) {
753 return 0;
754 } else if (reverse) {
755 return diff < 0 ? 1 : -1;
756 } else {
757 return diff < 0 ? -1 : 1;
758 }
759 }
760
761 @Override
762 public void swap(int a, int b) {
763 FloatDict.this.swap(a, b);
764 }
765 };
766 s.run();

Callers 4

sortKeysMethod · 0.95
sortKeysReverseMethod · 0.95
sortValuesMethod · 0.95
sortValuesReverseMethod · 0.95

Calls 2

runMethod · 0.95
resetIndicesMethod · 0.95

Tested by

no test coverage detected