Я могу до некоторой степени понимать указатели, но множественные уровни разыменования в swap()
сбивают меня с толку. Таким образом, я не могу правильно его реализовать.
Ниже приведен код по алфавиту на основе сортировки вставок:
void insertionSort(char **array,int rows,int cols)
{
for(int i=1;i<=rows-1;i++)
{
for(int j=i-1;strcmp(array[i],array[j])<0 && j>=0;j--)
{
swap(&array[i],&array[j]);
i--; //when swapped, subscript of key also drops
}
}
}
void swap(char **s1,char**s2)
{
char **temp=s1;
strcpy(*s1,*s2);
strcpy(*s2,*temp);
}
Я знаю, что swap()
реализован неправильно. Я надеюсь, что хотел бы знать, как пройти через процесс мышления, чтобы правильно реализовать swap()
(ie как лучше понять несколько слоев разыменования)