您好, 访客   登录/注册

浅谈“排队”在员工轮岗中的科学运用

来源:用户上传      作者:

  摘要:接触过计算机"数据结构"这门课程的朋友们都知道线性表是抽象数据型结构。线性表是一种应用范围十分广泛的抽象化的数据类型。他不仅经常作为某些数据团体的抽象描述以复合数据型的形式直接出现在程序中,而且作为多层次抽象化的基础用于生成更复杂的抽象数据型。
  关键词:线性表;结构;排队
  
  线性表结构可以动态地增长或收缩,在表中任何位置都可以访问、插入或删除元素。一个大的线性表可以分离成若干个子表,反之,若干个线性表也可以合并成一个大的线性表.一个线性表是由零个或多个具有相同类型的元素组成的一个有序集合,线性表的一个重要特性是表中所有元素都可以根据他们在表中的线性相对位置关系而唯一确定。
  “排队”是一种特殊形式的线性表,对于它,所有的插入操作在表的一端(后端)进行,而删除操作都在表的另一端(前端)进行。排队中元素排序的特点是先进先出。即最先进入队列中的元素,最后才能移出。别看“排队”是关于计算机数据结构中的术语,但是,有关“排队”的两个操作入队和出队理论却能在员工的轮岗中得到意想不到地运用。
  例如,当我们去营业厅办理业务时,我们进入大厅,迎面就会看见一排营业员5-6人顺次而坐办理业务。一般情况下,我们都会选择离我们较近的窗口去办理业务。这样坐在后排的营业员的业务量比坐在前排的营业员业务量少很多。现在,我们对于员工的管理都是按单笔业务提成金额以及业务量进行考核。营业员的提成工资和奖金都与你的业务量有直接关系。以前,我们也有营业员定时轮岗的安排。例如,营业员“赵、钱、孙、李、周、吴”六人,座次位置顺序为:“(1)、(2)、(3)、(4)、(5)、(6)”每周轮换一次。位置颠倒为营业员:“吴、周李、孙、钱、赵”,座次为(1)、(2)、(3)、(4)、(5)、(6)。这种轮换方法很简单,也易执行。但是,经过测算,除掉员工的个人因素,即营业员的年龄大小,对业务的熟练程度,反应速度快慢等因素外,员工业务量大小的差别还是很大。这样就导致每个人的收入差别很大。长期这样管理:一是对员工的不公平;二是会影响员工的工作积极性;三是会使员工之间,员工与管理者之间产生隔阂。误认为有亲疏之嫌,厚此薄彼之疑。所以,为了更好地解决这个矛盾,我们分析了“排队”这种特殊的线性表,并且利用它的入队、出队操作原理对员工的岗位进行排序。
  首先,为公平起见,先让员工用抓阄的方法抓出初始座次。然后,利用排队的入队操作原理将员工排初始座次。如抓阄的顺序为“赵、钱、孙、李、周、吴”,则先将“赵”员工进行入队操作,即在队的后端插入“赵”员工;然后,将“钱”员工入队,“钱”排在赵的后面;然后将“孙”员工入队,“孙”排在“钱”的后面;然后将“李”员工入队,排在“孙”员工的后面;然后将“周”员工入队,排在“李”员工的后面;最后将“吴”员工入队,排在“周”员工后面。这样一来,我们已经按着入队原理排好了员工的初始座次。即将表头指针指向“赵”,表尾指针指向“吴”。
  第一天的座次为:
  赵 钱 孙 李 周 吴
   12 34 5 6
  表头 表尾
  然后,按着先出队再入队原理,每天进行位置轮换。轮岗排序如下:
  将“赵”移出排在“吴”的后面,然后表头指针指向“钱”,表尾指针指向“赵”。
  依次第二天的座次为:
  钱 孙 李 周 吴 赵
   12 34 56
  表头表尾
  然后,将“钱”移出排在“赵”的后面,表头指针后移,指向“孙”,表尾指针指向“钱”。
  依次第三天的座次为:
  孙 李 周 吴 赵 钱
   1 23 45 6
  然后,将“孙”移出排在“钱”的后面,表头指针后移,指向“李”,表尾指针指向“孙”。
  依次第四天的座次为:
  李 周 吴 赵 钱 孙
   12 34 5 6
  然后,将“李”移出排在“孙”的后面,表头指针后移,指向“周”,表尾指针指向“李”。
  依次第五天的座次为:
  周 吴 赵 钱 孙 李
   12 3 45 6
  然后,将“周”移出排在“李”的后面,表头指针后移,指向“吴”,表尾指针指向“周”。
  最后第六天的座次为:
  吴 赵 钱 孙 李 周
   12 3 456
  然后,第七天又从头开始进行循环。
  可以将“排队”的入队、出队操作描述如下,其中函数
  addone(i)把位置i按模maxlength加1:
   functionaddone(i:integer):interger; i为整形变量
  begin
   return(i mod maxlength+1)
  end;{addone}
  procedureENQUEUE (x:elementtype; varQ:QUEUE); 入队操作过程
  x为数组元素 Q为队列变量
   begin
  ifaddone(addone(Q.rear))=Q.frontthen
  error('queueisfull'))
  else begin
  Q.rear:=addone(Q.rear);
  Q.elements[Q.rear]:=x
  end
   end;{ENQUEUE}
  
  procedureDEQUEUE(varQ:QUEUE);
  begin
  ifEMPTY(Q) then
  error('queue is empty')
  else
  Q.front:=addone(Q.front)
  end;{DEQUEUE}
  按照这种排序进行轮岗,第一、可以尽量公平合理地对待每一个员工;第二、如此排序就避免了忙闲不均的情况,充分调动了员工的积极性;第三、构建了员工与员工之间的和谐,员工与管理者之间的和谐;第四、还将艰涩难懂的“计算机数据结构”的“排队”理论很好地运用到了实际的管理工作中。
   综上所述,只要我们是出于公心,并且对实际管理工作中的问题勤于思考,那么就会有办法解决得很好。
  作者简介:丰满(1970~),1994年毕业于哈尔滨工业大学夜大学计算机科学及应用专业,获工学学士学位。先后从事过多种基层工作,从1998年开始从事通信站营业厅前台管理工作。

转载注明来源:https://www.xzbu.com/8/view-8858288.htm