C語言模擬在線招聘隨機處理競聘者算法

? ? ? ? 在互聯(lián)網(wǎng)時代,如果你是某家公司的HR,你所在的公司準備招聘一個員工,以保證公司正常運行,你根據(jù)公司的要求及用人部門的意見后制定了相應的招聘方案,那么接下來就是發(fā)布招聘相關(guān)的信息了,信息發(fā)布后此時正在求職的競聘者看到符合自身條件后會通過招聘平臺投送自己的簡歷。作為HR的你,會看到求職者投送的簡歷,但是如果求職者過于多,有好幾百份簡歷,你一個個比較顯然不現(xiàn)實,太費時費力。

? ? ? ? 按照傳統(tǒng)的一般做法,每份簡歷比較過去,做一個排序,一定可以找出最優(yōu)的競聘者,答案是肯定的,但是這樣太累,而且效率不高,也許存在越往后面看,求職者的專業(yè)素質(zhì)能力越來越差,這就增加了篩選成本。在實際招聘過程中,不一定要找到最優(yōu)那一個求職者,可以找一個滿足工作要求即可,在他實際工作前也不知道他的專業(yè)素質(zhì)水平怎么樣。

? ? ? ? 那么有其他比較高效的辦法嗎?肯定有的。1.有一種思路就是將收到的求職者進行編號1-n,編號時并沒有根據(jù)求職者的專業(yè)素質(zhì)進行某種規(guī)則的排序。2.在編號1-n中任意適當?shù)闹贫╧,k要滿足K\in[1,n] ,將做好編號的簡歷分為兩段。3.將前一段專業(yè)素質(zhì)最好的簡歷挑選出來,并且與最后一段即從[k+1,n ]逐個比較,若找到比前面一段最優(yōu)解更優(yōu)的解,則立即返回當前簡歷投送者的編號,并且停止后面繼續(xù)查找的工作;若沒有找到,則返回最后一個求職者的編號。

? ? ? ? 到這里篩選建立工作已經(jīng)全部完成,下面我們用C程序模擬一下處理過程,源程序如下:

#include <stdio.h>

#define NEGA_INFINITY -999999 //negative infinity

/***********************************************

*

* function online_maximum()

*

* args

* socre inttype array of candidates ability

* k inttype index of socre[] from 0 to n,[0,n)

* n number of candidates

*

* return i inttype index of hired candidate

*

* ********************************************/

int online_maximum(int socre[],int k,int n){

? ? int bestsocre=NEGA_INFINITY;

? ? int i;

? ? //find candidates from 0 to k,[0,k]

? ? for(i=0;i<=k;i++)

? ? ? ? if(socre[i]>bestsocre)

? ? ? ? ? ? bestsocre=socre[i];

? ? //compare candidates from k+1 to n with bestsocre

? ? for(i=k+1;i<n;i++)

? ? ? ? if(socre[i]>bestsocre)

? ? ? ? ? ? return i;

? ? //return last index of candidate

? ? return n-1;

}

int main()

{

? ? // socre is randomize numbers of array

? ? int socre[10]={1,2,7,8,5,6,9,4,10,3};

? ? int i,n,k=4;

? ? n=sizeof(socre)/sizeof(int);

? ? i=online_maximum(socre,k,n);

? ? // use online_maximun()

? ? printf("hired candidate index: %d \n",i);

? ? return 0;

}

/**************************************

*

* input socre[10]={1,2,7,8,5,6,9,4,10,3}

*

* output i the index of hired candidate

*

* **************************************/

以上便是關(guān)于再現(xiàn)招聘隨即處理模擬算法。

其運行結(jié)果如下圖:


圖1.運行結(jié)果

? ? ? ? 缺陷:上訴算法中采取在1-n的編號中任意指定k,然后找到前一段即[1,k] 最優(yōu)的解,但是有可能存在的情況就是前面一段編號的求職專業(yè)素質(zhì)普遍很低,導致最優(yōu)解也很小,而在[k+1, n] 范圍內(nèi)存在最優(yōu)解隨著往后推移而整體上升的情況,但是由于存在小山丘(如圖2)上升且比前一段最優(yōu)解更優(yōu),算法到這里立即返回,導致只能達到局部最優(yōu),沒有達到全局最優(yōu)。


圖2.局部最優(yōu)

? ? ? ? 后記:其實在實際的招聘的工作中,在篩選簡歷時不存在只篩選一次就讓求職者一次性入職的情況,但是面對數(shù)量龐大的求職簡歷可以采取將將1-n分成m個小段,每個小段中挑選出一個近似于最優(yōu)解,總共有m個求職者進入下一輪測試,該方法類似于分治思想。在實際情況中就是我們常說的一面,二面,三面等,雖然可能考察形式不一樣,但是基本是優(yōu)中選優(yōu)。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。
禁止轉(zhuǎn)載,如需轉(zhuǎn)載請通過簡信或評論聯(lián)系作者。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容