I was just wondering if I was doing this right. What I am trying to do is change the array references to pointer references and then use pointers and dereferenced pointers rather than array references. Any help would be appreciated!!
original
Mine
original
Code:
void sort(int *arr, int size)
{
int i, j, k, l ;
for (l = 1 ; l < size ; l = 3*l+1)
{
/* do nothing */
}
l = (l - 1) / 3 ;
while (l > 0)
{
for (i = 0 ; i < size ; i++)
{
for (j = i ; j >= l ; j -= l)
{
if (arr[j] < arr[j-l])
{
int t ;
t = arr[j] ;
arr[j] = arr[j-l] ;
arr[j-l] = t ;
}
}
}
#if DEBUG_LEVEL > 5
for (i = 0 ; i < COUNT ; i++)
{
printf("l=%d -- sorter[%d]=%d\n", l, i, arr[i]) ;
}
#endif
l = (l - 1)/3 ;
}
#if DEBUG_LEVEL > 0
checksort(arr, size) ;
#endif
Code:
void sort_p(int *arr, int size)
{
int *i, *j, k, *l, *p ;
int *t ;
for (l = arr + 1 ; l < arr+size ; l = 3*l+1)
/* do nothing */
l = (l - 1) / 3 ;
while (l > 0)
for (p = arr ; p < arr + size ; p++)
for (j = p ; j >= l ; j -= l)
if (*j < *(j-l))
t = *j ;
*j = *(j-l) ;
*(j-l) = t ;
#if DEBUG_LEVEL > 5
for (i = 0 ; i < COUNT ; i++)
printf("l=%d -- sorter[%d]=%d\n", l, i, *i) ;
#endif
l = (l - 1)/3 ;
#if DEBUG_LEVEL > 0
checksort(arr, size) ;
#endif
}