算法导论中雇佣问题的随机算法,这个算法的过程是先取一个数组test_array,表示每个应聘者的id。然后取一个随机数组P,这个数组与test_array等长,随机数的范围是在0-n^3(n表示应聘者的个数)。这样取随机数是为了避免优先级的重复,即有很小的可能性取到相同的优先级。取出的随机数组表示test_array数组成员的优先级,依据此优先级来给test_array排序,这个过程就是PERMUTE-BY-SORTING。
c语言测试源码如下:
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <time.h>
void random_array(int p[], int length)
{
srand((unsigned)time(NULL));
int i=0;
printf("The sort keys are:");
for (i=0; i<length; i++)
{
p[i] = rand() % (length * length * length);
printf("%d ", p[i]);
}
printf("\n");
}//取随机数组的元素值
void sort(int array[], int p[], int p_length)
{
int key=0;
int key2=0;