| 113 | |
| 114 | // rank sorting |
| 115 | function sort(reset, categ) { |
| 116 | let temp; |
| 117 | const len = rnkLen[categ]; |
| 118 | |
| 119 | if (reset) { // ranks reset (lexical sort) |
| 120 | for (i = 0; i < len - 1; i++) { |
| 121 | for (let j = i + 1; j < len; j++) { |
| 122 | if (rnkList[i][categ] > rnkList[j][categ]) { |
| 123 | temp = rnkList[i][categ]; |
| 124 | rnkList[i][categ] = rnkList[j][categ]; |
| 125 | rnkList[j][categ] = temp; |
| 126 | } |
| 127 | } |
| 128 | } |
| 129 | } |
| 130 | else { |
| 131 | for (let i = 0; i < len - 1; i++) |
| 132 | for (let j = 0; j < len - i - 1; j++) |
| 133 | if (pointsDict[rnkList[j][categ]][categ] <= pointsDict[rnkList[j + 1][categ]][categ]) { |
| 134 | |
| 135 | if ((pointsDict[rnkList[j][categ]][categ] === pointsDict[rnkList[j + 1][categ]][categ]) && (rnkList[j][categ] <= rnkList[j + 1][categ])) |
| 136 | continue; // maintaing lexical order |
| 137 | |
| 138 | // rank swap |
| 139 | temp = rnkList[j][categ]; |
| 140 | rnkList[j][categ] = rnkList[j + 1][categ]; |
| 141 | rnkList[j + 1][categ] = temp; |
| 142 | } |
| 143 | } |
| 144 | } |
| 145 | |
| 146 | // fetching data |
| 147 | let i = 0; |