/*
* 練習問題3.11 p.99
* ソートアルゴリズムが、気づかれることなくメトリックスに関して不正を行えるSortDoubleのセキュリティホールを
* 少なくとも1つ見つけなさい。そのセキュリティホールをなくすように修正しなさい。
* この場合、ソートアルゴリズムの作成者はmainを書かないと想定してください
*/
package ch03.ex03_11;
public class SimpleSortDouble extends SortDouble
{
static int count = 0;
double tmp[] =
{ 0.0, 0.1 };
protected void doSort()
{
for (int i = 0; i < getDataLength(); i++)
{
for (int j = i + 1; j < getDataLength(); j++)
{
if (compare(i, j) > 0)
{
swap(i, j);
}
}
}
// sortを終えた後に関係ないデータを用いてもう一度ソートを行うと、
// カウンタが上書きされてしまう
if (count == 0)
{
count = 1;
sort(tmp);
}
}
}