A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 刘佳 中级黑马   /  2012-11-7 21:40  /  1570 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 刘佳 于 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));
}
}
红色代码区为何要定义为数据包装类,对一组数据排序,直接定义数组,放在数组里面排序不更方便些吗;如果说是为了那个星,但那个星不是仅仅用于区别相同的数字吗,既然一样的数字排序谁在前谁在后根本就没区别,再此加一个星不是多此一举吗?

评分

参与人数 1技术分 +1 收起 理由
古银平 + 1 赞一个!

查看全部评分

3 个回复

倒序浏览
。。。。。。星号就是个注释,和前面出现的区分一下,实际编程中是没有星号的
回复 使用道具 举报
林剑 发表于 2012-11-7 21:44
。。。。。。星号就是个注释,和前面出现的区分一下,实际编程中是没有星号的 ...

这里将要排序的数字加星号进行区分,有这个必要吗?
回复 使用道具 举报
本帖最后由 林剑 于 2012-11-7 22:34 编辑
刘佳 发表于 2012-11-7 21:59
这里将要排序的数字加星号进行区分,有这个必要吗?


加星号只是为了分析排序算法的时候好区分两个30,不然分不清比较或者置换的是哪个30.
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马