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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 zhy934453950 于 2015-4-15 20:48 编辑

因为自己有些编程的底子,仅仅是看了下数组选择排序的思路,就自己开始写代码了。没想到写完了,跟视频上老师写的范例代码不一样,可是结果是一样的,我的算法逻辑上也说得通。众所周知,只要思路正确,结果正确。代码不同才是正常的,所以我发下自己代码和视频老毕的代码你们看看那个算法哪个好?哪个更易理解?
我的代码:public static void arrXZpaixu(int[] arr)
        {
                for(int i=0;i<arr.length;i++)
                {
                        for(int j=0;j<arr.length;j++)
                        {
                                if(arr<arr[j])
                                {
                                        arr=arr^arr[j];
                                        arr[j]=arr^arr[j];
                                        arr=arr^arr[j];
                                }
                        }
                }
        }
视频中老毕算法
public static void arrXZpaixu(int[] arr)
        {  
                for(int x=0;x<arr.length-1;x++)
                {
                        for(int y=x+1;y<arr.length;y++)
                        {
                                if(arr[x]<arr[y])
                                {                                 
                                 temp=arr[x];
                                 arr[x]=arr[y];
                                 arr[y]=temp;
                                }
                        }
                }
        }


13 个回复

正序浏览
可以哦,努力努力
回复 使用道具 举报
各自有各自的好处和优点
回复 使用道具 举报
添两端代码,计算一下你的算法总共用了多少步,和毕老师的比较一下
回复 使用道具 举报
编译通不过。。。
回复 使用道具 举报
不符合选择排序的思想啊!这样每次排序都要从arr[0]开始比较,效率比较低。
回复 使用道具 举报
路飞 发表于 2015-4-15 21:02
但代码感觉还是有问题,数组引用怎么可以与数组元素比较呢?

只有在数组引用之后情况下才能操作数组中的元素啊
数组只有为NULL的时候才不能被操纵(个人理解)
回复 使用道具 举报
路飞 中级黑马 2015-4-15 21:02:47
7#
zhy934453950 发表于 2015-4-15 20:46
在不通过第三变量的情况下,交换数组元素啊

但代码感觉还是有问题,数组引用怎么可以与数组元素比较呢?
回复 使用道具 举报
zhy934453950 发表于 2015-4-15 20:46
在不通过第三变量的情况下,交换数组元素啊

想起来了,学的太仓促忘了!
回复 使用道具 举报
路飞 发表于 2015-4-15 20:40
我也看了看你的代码,也从编译器上试了试,可能自己学的比较浅薄,看不懂你的代码,特别是循环体部分,求赐 ...

在不通过第三变量的情况下,交换数组元素啊
回复 使用道具 举报
本帖最后由 zhy934453950 于 2015-4-15 20:45 编辑

粘贴出错了是  if(arr<arr[j])
                                {
                                        arr=arr^arr[j];
                                        arr[j]=arr^arr[j];
                                        arr=arr^arr[j];
                                }
回复 使用道具 举报
我也看了看你的代码,也从编译器上试了试,可能自己学的比较浅薄,看不懂你的代码,特别是循环体部分,求赐教!
回复 使用道具 举报
膜拜
arr<arr[j]
数组 < int 是啥意思。求解 你这编译怎么过的
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马