选择排序

选择排序

原理: 在一列数字中,选出最小数与第一个位置的数交换。然后在剩下的数当中再找最小的与第二个位置的数交换,如此循环到倒数第二个数和最后一个数比较为止。(以下都是升序排列,即从小到大排列)

举例说明: $arr = array(6, 3, 8, 2, 9, 1);

第一轮:

第一次比较, 第一个数 6 与(3, 8, 2, 9, 1)中 3 比较,6大,当前最小数为3,位置为 1

第二次比较, 最小数字 3 与(3, 8, 2, 9, 1)中 8 比较,3小,当前最小数为3,位置为 1

第三次比较, 最小数字 3 与(3, 8, 2, 9, 1)中 2 比较,3大,当前最小数为2,位置为 3

第四次比较, 最小数字 2 与(3, 8, 2, 9, 1)中 9 比较,2小,当前最小数为2,位置为 3

第五次比较, 最小数字 2 与(3, 8, 2, 9, 1)中 1 比较,2大,当前最小数为1,位置为 5

第一轮比较完成后,确定最小数为1,小于第一个数6,交换位置上的数,交换后结果为 1 3 8 2 9 6

总结:第一轮比较,可以确定第一个位置的最小值。

第二轮:

第一次比较, 3与(8, 2, 9, 6)中 8 比较,3小,当前最小数为3,位置为 1

第二次比较, 3与(8, 2, 9, 6)中 2 比较,3大,当前最小数为2,位置为 3

第三次比较, 2与(8, 2, 9, 6)中 9 比较,2小,当前最小数为2,位置为 3

第四次比较, 2与(8, 2, 9, 6)中 6 比较,2小,当前最小数为2,位置为 3

第二轮比较完成后,确定最小数为2,小于第二个数3,交换位置上的数,交换后结果为 1 2 8 3 9 6

总结:第二轮比较,可以确定第二个位置的最小值。至此确定了前两个位置上的数。

第三轮:

第一次比较, 8与( 3, 9, 6)中 3 比较,8大,当前最小数为3,位置为3

第二次比较, 3与( 3, 9, 6)中 9 比较,3小,当前最小数为3,位置为3

第三次比较, 6与( 3, 9, 6)中 6 比较,3小,当前最小数为3,位置为3

第三轮比较完成后,确定最小数为3,小于第三个数8,交换位置上的数,交换后结果为 1 2 3 8 9 6

总结:第三轮比较,可以确定第三个位置的最小值。至此确定了前三个位置上的数。

 第四轮:

第一次比较, 8与( 9, 6)中 9 比较,8小,当前最小数为8,位置为3

第二次比较, 8与( 9, 6)中 6 比较,8大,当前最小数为6,位置为5

第四轮比较完成后,确定最小数为6,小于第四个数8交换位置上的数,交换后结果为 1 2 3 6 9 8

总结:第四轮比较,可以确定第四个个位置的最小值。至此确定了前四个位置上的数。

第五轮:

第一次比较, 9与 8 比较,9大,当前最小数为8,位置为5

    第五轮比较完成后,确定最小数为8,小于第五个数9,交换位置上的数,交换后结果为 1  2  3  6  8  9

总结:第五轮比较,可以确定第五个个位置的最小值。至此确定了前5个位置上的数。

综合以上五轮比较,每一轮比较都可以确定一个位置,对于N个数,比较N-1轮可以确定N个位置上的数,因为确定了N-1个位置,最后一个位置也就确定了。代码如下:

<?php
     
     function order($arr){
      //定义中间变量
      $temp = 0;
       $count = count($arr);
       for($i=0; $i<$count-1; $i++){
          //定义最小位置
           $minIndex = $i;
          for($j= $i+1; $j<$count; $j++){
             if($arr[$j] < $arr[$minIndex]){
                 $minIndex = $j;
             }
         }
         if($i != $minIndex){
               $temp = $arr[$i];
               $arr[$i] = $arr[$minIndex];
               $arr[$minIndex] = $temp;
               
        }
     }
      return $arr;

    }   
$arr = array(6, 3, 8, 2, 9, 1);     
$res = order($arr);
var_dump($res );
内容概要:文章基于4A架构(业务架构、应用架构、数据架构、技术架构),对SAP的成本中心和利润中心进行了详细对比分析。业务架构上,成本中心是成本控制的责任单元,负责成本归集与控制,而利润中心是利润创造的独立实体,负责收入、成本和利润的核算。应用架构方面,两者都依托于SAP的CO模块,但功能有所区分,如成本中心侧重于成本要素归集和预算管理,利润中心则关注内部交易核算和获利能力分析。数据架构中,成本中心与利润中心存在多对一的关系,交易数据通过成本归集、分摊和利润计算流程联动。技术架构依赖SAP S/4HANA的内存计算和ABAP技术,支持实时核算与跨系统集成。总结来看,成本中心和利润中心在4A架构下相互关联,共同为企业提供精细化管理和决策支持。 适合人群:从事企业财务管理、成本控制或利润核算的专业人员,以及对SAP系统有一定了解的企业信息化管理人员。 使用场景及目标:①帮助企业理解成本中心和利润中心在4A架构下的运作机制;②指导企业在实施SAP系统时合理配置成本中心和利润中心,优化业务流程;③提升企业对成本和利润的精细化管理水平,支持业务决策。 其他说明:文章不仅阐述了理论概念,还提供了具体的应用场景和技术实现方式,有助于读者全面理解并应用于实际工作中。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值