Java 如何仅使用7个比较对5个项目进行排序
我对如何仅使用7个比较对5个项目进行排序非常感兴趣。 我想我理解这个理论,但不幸的是,我不能把它写成代码。 我真的试着去理解它,但在我看来它似乎不起作用。例如在数字5,4,3,2,1上 谁能给我一个示例代码,但不要用LISP?我更喜欢Java或C/C++。这对我在学校真的很有帮助 先谢谢你 对我的英语很抱歉 编辑: 这里我添加了一些我用Java编写的代码。 变量a、b、c、d、e只是为了更好地定位代码。 我能够为特定的输入项编写特定的代码,这没有问题。 但我不会写一般的代码Java 如何仅使用7个比较对5个项目进行排序,java,sorting,comparison,Java,Sorting,Comparison,我对如何仅使用7个比较对5个项目进行排序非常感兴趣。 我想我理解这个理论,但不幸的是,我不能把它写成代码。 我真的试着去理解它,但在我看来它似乎不起作用。例如在数字5,4,3,2,1上 谁能给我一个示例代码,但不要用LISP?我更喜欢Java或C/C++。这对我在学校真的很有帮助 先谢谢你 对我的英语很抱歉 编辑: 这里我添加了一些我用Java编写的代码。 变量a、b、c、d、e只是为了更好地定位代码。 我能够为特定的输入项编写特定的代码,这没有问题。 但我不会写一般的代码 public st
public static void sort(int p[]) {
int a = 0;
int b = 1;
int c = 2;
int d = 3;
int e = 4;
if (p[a] > p[b]) {
swap(p,a,b);
}
if (p[c] > p[d]){
swap(p,c,d);
}
if (p[b] > p[d]){
swap(p,b,d);
}
if (p[e] < p[b]) {
if (p[e] < p[a]) {
swap(p,a,e);
swap(p,d,e);
//swap(p,b,d);//BLBE
}else{
swap(p,b,e);
swap(p,d,e);
}
}else {
if (p[e] < p[d]) {
swap(p,d,e);
}
}
if (p[c] < p[b]) {
if (p[c] < p[a]) {
swap(p,a,c);
swap(p,b,c);
}else
{
swap(p,c,b);
}
}else {
if (p[c] > p[d]) {
swap(p,d,c);
}
}
}
公共静态无效排序(int p[]{
int a=0;
int b=1;
int c=2;
int d=3;
int e=4;
如果(p[a]>p[b]){
互换(p、a、b);
}
如果(p[c]>p[d]){
互换(p、c、d);
}
如果(p[b]>p[d]){
互换(p、b、d);
}
if(p[e]p[d]){
互换(p、d、c);
}
}
}
编写基于比较的通用排序算法需要O(n lg n)个比较。如果我没有弄错的话,那么所有的O(nlgn)排序算法将在大约7次比较中对5个项目进行排序。如果幸运的话,可以合并排序、堆排序和快速排序。编写基于比较的通用排序算法需要O(n lg n)个比较。如果我没有弄错的话,那么所有的O(nlgn)排序算法将在大约7次比较中对5个项目进行排序。如果你幸运的话,可以合并排序、堆排序和快速排序。如果你理解这个理论,并且你已经尝试过自己编写一些代码,那么我建议发布你所写的内容,并描述你遇到的具体问题。简单地问代码的问题不太可能在这里得到很多答案。编写一个程序,创建一个二叉树,将所有排序的数字插入其中。这就是0+1+2+3+4=10次比较。2.修改程序,以便在第四次插入之前,图形在中间数字周围保持平衡。这将为您提供0+1+2+2+3=8个比较。3.修改程序,以便在第五次插入之前,根元素的较大子树以与第2步相同的方式进行平衡,这将减少一次比较。@Rosh:这就是答案,为什么不将其作为一个整体发布?如果您理解该理论,并且您已经试着自己编写了一些代码,然后我建议把你写的东西贴出来,描述一下你遇到的具体问题。简单地问代码的问题不太可能在这里得到很多答案。编写一个程序,创建一个二叉树,将所有排序的数字插入其中。这就是0+1+2+3+4=10次比较。2.修改程序,以便在第四次插入之前,图形在中间数字周围保持平衡。这将为您提供0+1+2+2+3=8个比较。3.修改程序,以便在第五次插入之前,根元素的较大子树以与第2步相同的方式进行平衡,这将减少一次比较。@Rosh:这就是答案,为什么不将其作为一个来发布?我相信你的意思是O(lg n!)=O(n lg n)?通过七次比较应该可以做到这一点。@templatetypedef:谢谢你的更正,我错了。我的帖子已经被编辑以反映这一点。我相信你的意思是O(lgn!)=O(nlgn)?通过七次比较应该可以做到这一点。@templatetypedef:谢谢你的更正,我错了。我的文章经过编辑以反映这一点。