()
| 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(); |
no test coverage detected