📄 ranksort.java
字号:
package Strategy;
import java.lang.Comparable;
public class RankSort extends SortStrategy
{
/** sort the array a using the rank sort method */
public void rank(Comparable [] a, int [] r)
{// Rank the objects in a[].
// make sure rank array is large enough
if (r.length < a.length)
throw new IllegalArgumentException
("length of rank array cannot " +
"be less than the number of objects");
// set all ranks to zero
for (int i = 0; i < a.length; i++)
r[i] = 0;
// compare all pairs of objects
for (int i = 1; i < a.length; i++)
for (int j = 0; j < i; j++)
if (a[j].compareTo(a[i])<=0) r[i]++;
else r[j]++;
}
public void sort(Comparable [] a)
{
// create rank array
int [] r = new int[a.length];
// rank the elements
rank(a, r);
// rearrange into sorted order
rearrange(a, r);
super.printArray(a);
}
/** rearrange objects by rank using an additional array
* @param a is the object array
* @param r is the rank array */
private void rearrange(Comparable [] a, int [] r)
{
// create an additional array u
Comparable [] u = new Comparable [a.length];
// move references to correct place in u
for (int i = 0; i < a.length; i++)
u[r[i]] = a[i];
// move back to a
for (int i = 0; i < a.length; i++)
a[i] = u[i];
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -