artem05kz / Prosedyrka_HW

0 stars 0 forks source link

быстрая сортировка #10

Open artem05kz opened 1 year ago

artem05kz commented 1 year ago

include

include

include

using namespace std;

define N 15

// Разделение с использованием схемы разделения Хоара int partition(int a[], int low, int high) { int pivot = a[low]; int i = low - 1; int j = high + 1; while (1) { do { i++; } while (a[i] < pivot);

    do {
        j--;
    } while (a[j] > pivot);

    if (i >= j) {
        return j;
    }

    swap(a[i], a[j]);
}

}

// Процедура быстрой сортировки void quicksort(int a[], int low, int high) { // базовое условие if (low >= high) { return; }

// переставить элементы по оси
int pivot = partition(a, low, high);

// повторяем подмассив, содержащий элементы, меньшие опорной точки
quicksort(a, low, pivot);

// повторяем подмассив, содержащий элементы, превышающие точку опоры
quicksort(a, pivot + 1, high);

}

int main() { int arr[N]; srand(time(NULL));

// генерируем случайный ввод целых чисел
for (int i = 0; i < N; i++) {
    arr[i] = (rand() % 100) - 50;
}

quicksort(arr, 0, N - 1);

for (int i = 0; i < N; i++) {
    cout << arr[i] << " ";
}

return 0;

}