黑马程序员技术交流社区

标题: 关于排序的一个小问题 [打印本页]

作者: 盛祖华    时间: 2012-3-16 17:19
标题: 关于排序的一个小问题
在数列排序中,如果有相同的元素,如何确定相同元素的前后顺序?例如:{4,3,9,17,2,3,16,8,44,11} 如何确定两个3 的位置?有啥区别?
作者: 赵孟恩    时间: 2012-3-16 17:23
在排序方法中 3和3 是进行比较的, 只是看你怎么处理大小关系了  if(a >b )不执行if里面的语句  或 if(a>=b)执行if里面的语句   。 其实不用执行了
作者: 盛祖华    时间: 2012-3-16 17:58
赵孟恩 发表于 2012-3-16 17:23
在排序方法中 3和3 是进行比较的, 只是看你怎么处理大小关系了  if(a >b )不执行if里面的语句  或 if(a> ...

不是你说的那种比较,同学,你没明白我的意思。。。
作者: 赵孟恩    时间: 2012-3-16 18:13
本帖最后由 赵孟恩 于 2012-3-16 18:14 编辑
盛祖华 发表于 2012-3-16 17:58
不是你说的那种比较,同学,你没明白我的意思。。。


排序 求最值 不都得比较吗   通过比较才能确定位置啊
作者: 周建    时间: 2012-3-16 18:18
你可以遍历数组:for(int x=0;x<arr.length;x++){if(arr[x]==3)return x;}得到第一个3的位置;
再来一次:for(int x=1/*上一个循环得到的角标值*/;x<arr.length;x++){if(arr[x]==3)return x;}得到第二个3的位置;
不知道楼主是不是这个意思

作者: 李成航    时间: 2012-3-16 18:39
可用二分法收索

int[] ar={4,3,9,17,2,3,16,8,44,11};

int i=Arrays.binarySearch(ar,3);//获得第一个3的位置
int i2=Arrays.binarySearch(ar,i+1,ar.length,3);//获得第二个三的位置
                              




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2