Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- using namespace std;
- void bubblesort(int *a, int n)//пузырек
- {
- for (int i = 0; i < n; i++)
- for (int j = 0; j < n - 1 - i; j++)
- if (a[j] > a[j + 1])
- swap (a[j], a[j + 1]);
- }
- void inssort(int*a, int n)//вставка
- {
- int i, temp, j;
- for (i = 0; i < n; i++)
- {
- temp = a[i];
- for (j = i - 1; j > 0 && a[j] > temp; j--)
- a[j + 1] = a[j];
- a[j + 1] = a[j];
- a[j + 1] = temp;
- }
- }
- void merge(int*a, int left, int right)//слияние
- {
- int mid = (left + right) / 2;
- int *res = new int[right + left];
- int i = left;
- int j = mid;
- for (int k = 0; k < right - left; k++)
- {
- if (a[i] < a[j] )
- {
- res[k] = a[i];
- i++;
- }
- else
- {
- if (i < mid && j < right)
- {
- res[k] = a[j];
- j++;
- }
- else
- {
- if (i < mid)
- {
- res[k] = a[i];
- i++;
- }
- else
- {
- res[k] = a[j];
- j++;
- }
- }
- }
- }
- for (int k = 0; k < right; k++)
- a[left + k] = res[k];
- }
- void qSort(int *a, int left, int right)// быстрая
- {
- int mid = (left + right) / 2;
- int l = left;
- int r = right;
- int t = a[mid];
- do
- {
- while (a[l] < t)
- l++;
- while (a[r] > t)
- r--;
- if (l > r)
- {
- swap(a[l], a[r]);
- l++;
- r--;
- }
- } while (l <= r);
- if (left < r)
- qSort(a, left, r);
- if (l < right)
- qSort(a, l, right);
- }
- void CountingSort(int *a, int *c, int n, int k)// подсчетом
- {
- for (int i = 0; i < k; i++) {
- c[i] = 0;
- }
- for (int i = 0; i < n; i++) {
- c[a[i]] = c[a[i]] + 1;
- }
- int i = 0;
- for (int j = 0; j < k; j++) {
- while (c[j] != 0) {
- a[i] = j;
- c[j]--;
- i++;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement