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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

©   /  2012-7-30 18:29  /  2297 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

毕老师的那两个我就不说了,我想了一个自己的思路,你可以参考一下
我的排序方法:
原理:让参与外循环元素的头角标元素和最值元素调换位置。
内循环一次,得到最值角标,与参与外循环的头角标元素调换位置。最值出现参与循环的元素的头角标位置上。
注意:m这个变量存储参与外循环的元素中最值的角标。这个值的初始化值随着a改变,a为去跟其余元素最值调换位置的元素角标,b为跟最值比大小的元素角标。m为最值角标。
好处:内循环每次循环,满足条件在栈内存中进行交换(角标交换),堆内存中不变(数组的值)。
内循环结束,才在堆内存中交换(数组元素位置置换)。这样在栈内存中交换,适当的会节省内存。
*/

        public static void arr_sort3(int[]x)
        {
                for (int a=0;a<x.length ;a++ )
                {        int m=a;//m这个变量存储参与外循环的元素中最值的角标。这个值初始化值随着a改变
                        {        for (int b=a+1;b<x.length;b++ )//内循环一次,得出参与循环的最值元素角标
                                        if (x[m]>x[b])
                                        m=b;
                        }
                        int tmp=x[m];//将最值元素与参与循环的头角标元素调换位置。
                        x[m]=x[a];
                        x[a]=tmp;
                        System.out.println(x[a]);//调换位置以后,打印头角标元素即最值。
                }
        }



}

评分

参与人数 1技术分 +1 收起 理由
韦念欣 + 1 赞一个!

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马