[16] nat a; [3] nat steps; function ShellSort (nat aSize, sizeStep): nat { nat i,j,h,s,t,v; steps[0] = 7; steps[1] = 3; steps[2] = 1; for(s=0..sizeStep-1) { h = steps[s]; for(i=h..aSize-1) { t = a[i]; j = i; v = a[j-h]; while(j>=h & v>t) { a[j] = v; j = j-h; if(j>=h) v = a[j-h]; } a[j]=t; } } return 0; } thread test{ nat k; a[0] = 9; a[1] = 8; a[2] = 16; a[3] = 15; a[4] = 1; a[5] = 10; a[6] = 2; a[7] = 11; a[8] = 3; a[9] = 4; a[10] = 6; a[11] = 5; a[12] = 14; a[13] = 12; a[14] = 7; a[15] = 13; k = ShellSort(16,3); }