Losowanie elementu dzielącego

0

jak wylosować element dzielący?
Mam taki program:

#include <iostream>
#include <ctime>
#include <cstdlib>
using namespace std;

const int N=5;
void Losuj(int A[])
{
    for (int i=0;i<N;i++)
A[i]=rand()%100;

}
void Wypisz(int A[])
{
    for (int i=0;i<N;i++)
    cout<<A[i]<<" ";
    cout<<endl;

}

void QuickSort(int A[], int p, int k)
{
    int i=p, j=k, m=A[(p+k)/2];
    while (i<=j)
    {
        while (A[i]<m) i++;
        while (A[j]>m) j--;
        if (i<=j)
        {
            swap(A[i],A[j]);
            i++; j--;
        }
    }
    if (p<j) QuickSort(A,p,j);
    if(i<k) QuickSort(A,i,k);
}

int main()
{
    int A[N];
srand(time(NULL));
 Losuj (A);
 Wypisz (A);
 QuickSort(A,0,N-1);
 Wypisz(A);
    return 0;
}
1
#include <iostream>

#include <ctime>

#include <cstdlib>

using namespace std;

const int N = 5;
void Losuj(int A[]) {
  for (int i = 0; i < N; i++)
    A[i] = rand() % 100;

}
void Wypisz(int A[]) {
  for (int i = 0; i < N; i++)
    cout << A[i] << " ";
  cout << endl;

}

void QuickSort(int A[], int p, int k) {
  int i = p, j = k, m = A[(p + k) / 2];
  while (i <= j) {
    while (A[i] < m) i++;
    while (A[j] > m) j--;
    if (i <= j) {
      swap(A[i], A[j]);
      i++;
      j--;
    }
  }
  if (p < j) QuickSort(A, p, j);
  if (i < k) QuickSort(A, i, k);
}

int main() {
  int A[N];
  srand(time(NULL));
  Losuj(A);
  Wypisz(A);
  QuickSort(A, 0, N - 1);
  Wypisz(A);
  return 0;
}
2

Doprawdy, a czy cokolwiek w tym kodzie rozumiesz?
Bo jak nie to każda pomoc ci nie wiele pomoże oprócz skierowania do byle kursu aby zacząć rozumieć kod który masz poprawić.
m = A[rand()%N];

0

Coś mi się wydaje, że pytanie jest po prostu bardzo dziwne zadane.
Najprawdopodobniej chodziło o to: jak najlepiej wybrać piwot dla qick sort.

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