MCPcopy Create free account
hub / github.com/AstroImageJ/astroimagej / sortArray

Method sortArray

ij/src/main/java/ij/macro/Functions.java:6528–6577  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

6526 }
6527
6528 Variable[] sortArray() {
6529 interp.getLeftParen();
6530 Variable[] a = getArray();
6531 boolean multipleArrays= interp.nextToken()==',';
6532 int[] indexes = null;
6533 int len = a.length;
6534 int nNumbers = 0;
6535 for (int i=0; i<len; i++) {
6536 if (a[i].getString()==null) nNumbers++;
6537 }
6538 if (nNumbers==len) {
6539 double[] d = new double[len];
6540 for (int i=0; i<len; i++)
6541 d[i] = a[i].getValue();
6542 if(multipleArrays)
6543 indexes = Tools.rank(d);
6544 Arrays.sort(d);
6545 for (int i=0; i<len; i++)
6546 a[i].setValue(d[i]);
6547 } else if (nNumbers==0) {
6548 String[] s = new String[len];
6549 for (int i=0; i<len; i++)
6550 s[i] = a[i].getString();
6551 if(multipleArrays)
6552 indexes = Tools.rank(s);
6553 Arrays.sort(s, String.CASE_INSENSITIVE_ORDER);
6554 for (int i=0; i<len; i++)
6555 a[i].setString(s[i]);
6556 } else{
6557 interp.error("Mixed strings and numbers");
6558 return a;
6559 }
6560 while (interp.nextToken()==',') {
6561 interp.getComma();
6562 Variable[] b = getArray();
6563 if(b.length != len){
6564 interp.error("Arrays must have same length");
6565 return a;
6566 }
6567 Variable[] c = new Variable[len];
6568 for (int jj = 0; jj < len; jj++){
6569 c[jj] = b[indexes[jj]];
6570 }
6571 for (int jj = 0; jj < len; jj++){
6572 b[jj] = c[jj];
6573 }
6574 }
6575 interp.getRightParen();
6576 return a;
6577 }
6578
6579 Variable[] getRankPositions() {
6580 interp.getLeftParen();

Callers 1

doArrayMethod · 0.95

Calls 12

getArrayMethod · 0.95
rankMethod · 0.95
getLeftParenMethod · 0.80
getCommaMethod · 0.80
getRightParenMethod · 0.80
nextTokenMethod · 0.45
getStringMethod · 0.45
getValueMethod · 0.45
sortMethod · 0.45
setValueMethod · 0.45
setStringMethod · 0.45
errorMethod · 0.45

Tested by

no test coverage detected