又一个排序法,感觉上好象比冒泡好上那么一点点,请各位大哥大姐给点评论

王朝other·作者佚名  2006-01-09
宽屏版  字体: |||超大  

昨天在社区看到一位兄贵的排序算法(RANK?),又刚好昨晚由失眠了,自己想了一个,觉得好象还可以,所以想拿出来讨论一下。我的想法是这样的开始的,在冒泡排序中,对数组中要进行n*(n-1)/2次比较,而对n个元素的数组来说,只要进行n-1次比较就可以确定它们的顺序,那么剩下的比较就完全是多余的了。就比如有3个数a<b<c,只要知道a<b,b<c就可以确定它们的位置,可要用冒泡好象要比较3次,这就对不起资源了(浪费是最大的犯罪),所以可以对它进行一点改进。我的想法是先排好数组的前i个元素,然后比较a[i]和a[i+1],如果a[i]大于a[i+1]那么交换,并且将a[i+1]放到前面它应该在的位置中……。说不清,看代码:

void test()

{int[] a={.....} //数组自己写

for(int i=0;i<=a.Lenght()-2;i++)

if(a[i]>a[i+1]) for(int j=i+1;j>0;j--)

{

if(a[j]<a[j-1])

{

int temp=a[j]; a[j]=a[j-1]; a[j-1]=temp;}

else break;

}//完成

}//这刮号好象可以去掉

}

写得不好,大家不知道看得懂意思了不?以上就是我的算法,暂且称之为SB排序法吧(双BUBBLE)。不知道以前有没有过类似的算法,我在《数据结构》上没看到,所以发上来。大家有什么意见尽管说吧,如果觉得还可以的话给的掌声和鲜花,如果看过了或是觉得实在不怎么样的话,鸡蛋和砖头你也尽管砸吧,什么?还不行,那么,我QQ28561001,(屁股向后)请赐脚...........

PS:有没有那位仁兄有对付失眠的绝招啊.......

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
© 2005- 王朝网络 版权所有