黑马程序员技术交流社区

标题: java排序算法 [打印本页]

作者: a283398689    时间: 2013-10-8 16:28
标题: java排序算法
ublic static void quickSort(int a[]) {
                for(int i=0;i<a.length;i++){
                        int         temp = 0;
                        for(int j=0;j<a.length-1;j++){
                                if(a[i]>a[j]){
                                 temp = a[i];
                                 a[i] = a[j];
                                        a[j] = temp;
                                }
                        }
                }
               
                 
        }

我这样都可以排序啊 。  

为什么啊~
作者: killuakillua898    时间: 2013-10-8 17:15
for(int i=0;i<a.length;i++){                                   //i=0
                        int         temp = 0;                    //你在这里定义了temp=0
                        for(int j=0;j<a.length-1;j++){
                                if(a[i]>a[j]){    //进行判断 eg:第一次是a0和j0比较,如果a0大于j0则交换a0,j0的位置
                                 temp = a[i];
                                 a[i] = a[j];
                                        a[j] = temp

所以你执行循环后肯定是进行了排序,不知理解没有,不理解可以再问
作者: 花生壳    时间: 2013-10-8 17:47
怎么说呢,这个排序是比较基础的排序,思路也不太难懂,就是一个temp中间变量。外加两个相互交换的值。你也可以变化一下条件if(a[i]<a[j]) 实现另一种排序方式
作者: a283398689    时间: 2013-10-8 19:37
killuakillua898 发表于 2013-10-8 17:15
for(int i=0;i

a>a[j]){    //进行判断 eg:第一次是a0和j0比较

他们同一个下标 这样的写法肯定是不对的
作者: Mr.__ㄨīn    时间: 2013-10-8 20:01
这种排序称之为选择排序
选择排序的原理是:每次取一个角标上的值与其他角标上的数值比较,如果大于,将两个值互换。
你可以把关于排序的视频在看看,望你早点理解。
作者: winsking    时间: 2013-10-8 20:25
本帖最后由 winsking 于 2013-10-8 20:27 编辑

你这是选择排序,毕老师讲过的
它的工作原理是首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。
选择排序和冒泡排序思路上有一点相似,都是最简单直观的,当然效率也是最低的


作者: jìng╮煜    时间: 2013-10-8 21:18
你这写的不对.  这样只是换了位置,并不是排上序了.选择排序也不是这么写的.j=i+1.   才是.
作者: jìng╮煜    时间: 2013-10-8 21:19
补充一点,  如果要改成上述我说的那样.    循环结束条件也要改一改.
作者: To    时间: 2013-10-9 08:42
如果问题已解决,请将帖子改为提问结束,如果没有解决请楼主继续提问,谢谢合作
作者: a283398689    时间: 2013-10-10 09:47
jìng╮煜 发表于 2013-10-8 21:18
你这写的不对.  这样只是换了位置,并不是排上序了.选择排序也不是这么写的.j=i+1.   才是. ...

但是我这样 也可以排序阿 也是对的,
关键我不理解的是第一次排序 temp  和temp[j]其实都是一个下标
作者: jìng╮煜    时间: 2013-10-12 11:44
验证过了,可以排序,排序方式是选择.   temp那边是小误差,没关系的.




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