続き↓

while (i <= j) {

while (workarg[i].avr > pivot)
i++;

while (pivot > workarg[j].avr)
j--;

if ( i < j )
workswap(workarg, i, j);
i++;
j++;
}

if (head <= i-1)
worksort(workarg, head, i-1);
if ( j+1 <= tail)
worksort(workarg, j+1, tail);
}

void workswap(Work *workarg, int x, int y){
Work worktmp;

worktmp = workarg[x];
workarg[x] = workarg[y];
workarg[y] = worktmp;
}