Sortowanie tablicy liczb niemalejąco - wykorzystanie funkcji znajdowania środka

Sortowanie tablicy liczb niemalejąco - wykorzystanie funkcji znajdowania środka
lukashid
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 93
0

Mamy funkcję "srodek" , która dla tablicy liczb naturalnych zwraca wartość środkowego elementu .Wiadomo, że funkcja ta działa w czasie O (j - i +1).
Pytanie brzmi : Jak napisac funkcję o parametrach n - ilosc elementów tablicy oraz a[] - tablica liczb, w której korzystając z funkcji "srodek" posortujemy podaną w parametrze tablicę niemalejąco ?

Nie wiem jak wykorzystać tę funkcję znajdowania środka . Ktoś ma pomysł ?

_13th_Dragon
  • Rejestracja: dni
  • Ostatnio: dni
1

Algorytm QuickSort

lukashid
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 93
0

Czyli tak jak myślałem. Dzięki za odpowiedź ;)

lukashid
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 93
0

A jeszcze jedno pytanko podobne mam. Mamy funkcję , która zwraca nam też środek, ale w takim znaczeniu, ze połowa jest od niego mniejsza i połowa większa. I naszym zadaniem również jest korzystając z tej funkcji stworzyć taką, która posortuje elementy. Czy to też będzie quickSort, bo w takiej sytuacji nie znamy pozycji tego środkowego elementu. (dzięki funkcji środek będziemy znali jedynie jego wartość bez pozycji)

_13th_Dragon
  • Rejestracja: dni
  • Ostatnio: dni
1

Też QuickSort tylko że tym razem z gwarantowanym O(n*log(n))

lukashid
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 93
0

Czy miałoby to wyglądać tak ?

Kopiuj
void quicksort(int tab[], int left, int right){
     int i=left;
     int j=right;
     int x= srodek(tab, left, right);
     do{
         while(tab[i]<x) i++;
         while(tab[j]>x) j--;
         if(i<=j){
             int temp=tab[i];
             tab[i]=tab[j];
             tab[j]=temp;
             i++;
             j--;
         }
     }while(i<=j);
     if(left<j) quicksort(tab,left,j);
     if(right>i) quicksort(tab,i,right);
}

 

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.