排序:
假设,在屋子里面,有n个物品,每个物品都有俩属性,一个是id,一个是pos(pos指的是该物品在屋子里的位置,位置可以任意挪动,当然,你也可以看成index来对待)。
n个物品,都是根据id的大小来进行排列的
①.那么假设,初始有5个物品,其排列状态为:[A、B、C、D、E]
②.现在,人为的对调了C、E的位置,被发现后,需要调整排序,恢复原来的排序位置一般排序,我们仅仅遍历下所有物品,对比下id大小,就可以进行排序了。
但这样做的话,数据量大的时候,就不是太好用了。
如,客户端发送整理的命令,服务端收到后,开始排序,到整理好,再发给客户端这段时间内,客户端处于一个卡停的状态。大伙讨论下?能否做成只对那些顺序动过的物品,进行排序?这样的做法,好不好?
或者有更好的排序方法?
假设,在屋子里面,有n个物品,每个物品都有俩属性,一个是id,一个是pos(pos指的是该物品在屋子里的位置,位置可以任意挪动,当然,你也可以看成index来对待)。
n个物品,都是根据id的大小来进行排列的
①.那么假设,初始有5个物品,其排列状态为:[A、B、C、D、E]
②.现在,人为的对调了C、E的位置,被发现后,需要调整排序,恢复原来的排序位置一般排序,我们仅仅遍历下所有物品,对比下id大小,就可以进行排序了。
但这样做的话,数据量大的时候,就不是太好用了。
如,客户端发送整理的命令,服务端收到后,开始排序,到整理好,再发给客户端这段时间内,客户端处于一个卡停的状态。大伙讨论下?能否做成只对那些顺序动过的物品,进行排序?这样的做法,好不好?
或者有更好的排序方法?
解决方案 »
- jdk-6u35-linux-i586.bin 怎么处理java.lang.NoClassDefFoundError
- 各位前辈。指点一下静态方法行吗 谢谢
- 关于这个测试,知道报空指针错误,但是不知道怎么改,求帮助!
- OPhone是 手机的又是什么开发平台?
- 着急,遇到瓶颈问题,需求各位大侠帮助;请问可以在Application中调用Applet的画图方法吗?
- 问个一个小小小问题,我揭帖出名的快!
- swing 绘图问题
- 一个也许很傻的问题,怎么把字节码最后弄成exe文件啊。/
- 怎样根据查询返回的字段值(数值或字符型值)的宽度动态设置JTabel的Column的宽度
- 请问java.lang.NullPointerException这个错,说明了什么问题,谢谢
- 文件选择上传,非WEB的怎么做?
- JTree和JTable问题
public class SortSample
{
private ArrayList<InnerItem> list; /**
* 物品,内部类
*
*/
class InnerItem
{
int id;
int pos;
} /**
* 初始化10个物品,pos
*
*/
private ArrayList<InnerItem> setItems()
{
list = new ArrayList<InnerItem>();
Random rand = new Random(); int length = 10;
boolean[] boolID = new boolean[length];
boolean[] boolPOS = new boolean[length];
int id = 0;
int pos = 0; // 这个for loop主要是为了添加不重复的id和pos
for(int i = 0; i < length; i++)
{
InnerItem item = new InnerItem(); do
{
id = rand.nextInt(length);
}
while (boolID[id]);
boolID[id] = true;
item.id = id;
do
{
pos = rand.nextInt(length);
}
while (boolPOS[pos]);
boolPOS[pos] = true;
item.pos = pos; list.add(item);
//System.out.println("id = " + id);
//System.out.println("num = " + pos);
}
return list;
} //test
public static void main (String[] args)
{
System.out.println(new SortSample().setItems());
}
}