Sortowanie z ominięciem tab[x][3] i tab[x][4]

0

Wykorzystałem ten kod. Nie mam pojęcia jak zrobić żeby ominąć 3 i 4 miejsce w tablicy.

#include <stdio.h>
#include <string.h>

void quickSortMain(char items[][10], int count);
void quickSort(char items[][10], int left, int right);

int main(void)
{
  int i;
  char str[][10] = { "12103111","12202111","1230111","3230111","0230111"};

  quickSortMain(str, 4);

  for(i=0; i<4; i++) {
     printf("%s ", str[i]);
  }
  return 0;
}
void quickSortMain(char items[][10], int count)
{
  quickSort(items, 0, count-1);
}

void quickSort(char items[][10], int left, int right)
{
  int i, j;
  char *x;
  char temp[10];

  i = left;
  j = right;
  x = items[(left+right)/2];

  do {
    while((strcmp(items[i],x) < 0) && (i < right)) {
       i++;
    }
    while((strcmp(items[j],x) > 0) && (j > left)) {
        j--;
    }
    if(i <= j) {
      strcpy(temp, items[i]);
      strcpy(items[i], items[j]);
      strcpy(items[j], temp);
      i++;
      j--;
   }
  } while(i <= j);

  if(left < j) {
     quickSort(items, left, j);
  }
  if(i < right) {
     quickSort(items, i, right);
  }
}
0

Czemu kopiujesz tablice zamiast po prostu podmienić wskaźniki?

A odpowiedź na pytanie brzmi: najprościej gdybyś te dwa łańcuchy przesunął tymczasowo na początek lub koniec tablicy, tzn na czas sortowania.

0

Dałem je na koniec jednak nie wiem jak po sortowaniu umieścić je z powrotem. Sizeof nie działa przy tablicy dwuwymiarowej. Próbowałem tez zapisać rozmiar w dodatkowej tablicy tylko ze kolejność po sortowaniu się zmienia.

0

Problem rozwiązany można usunąc :P

1 użytkowników online, w tym zalogowanych: 0, gości: 1