Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- void quick_sort(int *a, int left, int right) {
- int elem = a[left], l = left, r = right;
- while (left < right) {
- while ((a[right] >= elem) && (left < right)) right--;
- if (left != right) {
- a[left] = a[right];
- left++;
- }
- while ((a[left] <= elem) && (left < right)) left++;
- if (left != right){
- a[right] = a[left];
- right--;
- }
- }
- a[left] = elem;
- elem = left;
- left = l;
- right = r;
- if (left < elem) quick_sort(a, left, elem - 1);
- if (right > elem) quick_sort(a, elem + 1, right);
- }
- void selection_sort(int *a, int n) {
- int t;
- for(int i = 0; i < n - 1; i++) {
- int min = i;
- for (int j = i + 1; j < n; j++) {
- if (a[j] < a[min]) min = j;
- }
- if (min != i) {
- t = a[i];
- a[i] = a[min];
- a[min] = t;
- min = i;
- }
- }
- }
- void sort(int *a, int n, int m) {
- if (n < m) quick_sort(a, 0, n - 1);
- else selection_sort(a, n);
- }
- int main()
- {
- int n, m;
- scanf("%d %d", &n, &m);
- int *a;
- a = (int*)malloc(n * sizeof(int));
- for (int i = 0; i < n; i++) {
- scanf("%d", &a[i]);
- }
- sort(a, n, m);
- for(int i = 0; i < n; i++) {
- printf("%d ", a[i]);
- }
- free(a);
- return 0;
- }
- ____________________________________________________________________________________________________________________________
- Быстрая сортировка + сортировка прямым выбором
- Составьте программу quicksort.c, осуществляющую сортировку массива целых чисел в порядке возрастания.
- В программе должен быть реализован алгоритм быстрой сортировки, рекурсивную функцию которого нужно модифицировать таким образом, чтобы, во-первых, для последовательностей длиной меньше m выполнялась сортировка прямым выбором, а во-вторых, глубина стека вызовов была равна O(lg n), где n – размер массива.
- Программа должна считывать со стандартного потока ввода размер массива n, число m и значения элементов массива. В стандартный поток вывода должны выводиться элементы отсортированного массива.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement