本帖最后由 刘佳 于 2012-11-7 21:58 编辑
有些书中直接排序的例子给的数据中含有星号,什么意思,有特殊含义吗?
例如:给这一组数据使用直接选择排序21 , 30 , 49 , 30* ,16 , 9
麻烦解释下,该星号的作用,以及该星号参与怎样的比较。
//定义一个数据包装类
class DataWrap implements Comparable<DataWrap>
{
int data;
String flag;
public DataWrap(int data, String flag)
{
this.data = data;
this.flag = flag;
}
public String toString()
{
return data + flag;
}
//根据data实例变量来决定两个DataWrap的大小
public int compareTo(DataWrap dw)
{
return this.data > dw.data ? 1
: (this.data == dw.data ? 0 : -1);
}
}
public class SelectSort
{
public static void selectSort(DataWrap[] data)
{
System.out.println("开始排序");
int arrayLength = data.length;
//依次进行n-1趟比较, 第i趟比较将第i大的值选出放在i位置上。
for (int i = 0; i < arrayLength - 1 ; i++ )
{
int minIndex = i ;
//第i个数据只需和它后面的数据比较
for (int j = i + 1 ; j < arrayLength ; j++ )
{
//如果第i位置的数据 > j位置的数据, 交换它们
if (data.compareTo(data[j]) > 0)
{
DataWrap tmp = data;
data = data[j];
data[j] = tmp;
}
}
System.out.println(java.util.Arrays.toString(data));
}
}
public static void main(String[] args)
{
DataWrap[] data = {
new DataWrap(21 , ""),
new DataWrap(30 , ""),
new DataWrap(49 , ""),
new DataWrap(30 , "*"),
new DataWrap(16 , ""),
new DataWrap(9 , "")
};
System.out.println("排序之前:\n"
+ java.util.Arrays.toString(data));
selectSort(data);
System.out.println("排序之后:\n"
+ java.util.Arrays.toString(data));
}
}
红色代码区为何要定义为数据包装类,对一组数据排序,直接定义数组,放在数组里面排序不更方便些吗;如果说是为了那个星,但那个星不是仅仅用于区别相同的数字吗,既然一样的数字排序谁在前谁在后根本就没区别,再此加一个星不是多此一举吗?
|