JAVA 蹒跚自学之 第七日 数组选择 冒泡排序优化

本文深入探讨了选择排序算法的优化策略,通过减少数据换位次数来降低系统资源消耗,实现算法的高效运行。同时,对比了使用第三方变量与异或操作进行数据置换的区别,并总结了在不同场景下的适用方法。对于追求高性能和资源优化的开发者而言,这些优化技巧具有实际应用价值。

原来的选择排序代码

 

                    int [] arr = new int[]{3,2,6,9,34,66,11};

     public static void xuanze(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]

                                               { arr[x]=arr[x]^arr[y];

                                                 arr[y]arr[x]^arr[y];

                                                 arr[x]=arr[x]^arr[y];

                                                }

                                        }

                        }

}

分析:每次满足条件都要进行数据的换位,系统资源消耗比较大

优化后

    public static void xuanze_1(int[] arr)
        {
            for (int x=0;x<arr.length-1 ;x++ )  // 完成 X位元素的提取 
            {
                int temp =arr[x];
                int index = x;

                for (int y=x+1;y<arr.length ;y++ )  // 完成 X位外的所有元素的值的提取
                {
                    if (temp>arr[y])       // 每次满足条件都要进行数据的换位  可以先用一变量记录住最终比较的值,然后进行一次换行即可
                    {

                        temp = arr[y];
                         index =y;
                           /* arr[x]=arr[x]^arr[y];// 完成互换
                            arr[y]=arr[x]^arr[y];
                            arr[x]=arr[x]^arr[y]; */

                    }
                }

                     if(x!=index)
                             { 
                                arr[x]=arr[x]^arr[index];// 完成互换
                                arr[index]=arr[x]^arr[index];
                                arr[x]=arr[x]^arr[index];
                             }

            }
        }

 

关于 利用第三方变量进行的数据置换 与  异或 进行的数据置换的  区别   

  前者可以完成所有数据的置换  包括两个相等的数

者只能置换两个不一样的数 ,否则运算出错 。如果想利用此方法来完成,必须加入首要条件 判断 。if(x!=y)

  前者加入此判断可以减少两个相等的数据置换,不加入也不会出错的,,只是浪费了一次没有必要的系统资源支出。而后者在浪费系统资源的同时,也会计算出错。所以 if的判断必须加上 。

总结:无论利用那种方法,我们都要加入if 判断 。冒泡方法的优化,不再复述。

 

                                                                          2015-5-26  

转载于:https://www.cnblogs.com/gailuo/p/4530279.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值