Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<iostream>
- using namespace std;
- void przesiewanie(int q, int p, int *a) {
- int i = q, j = 2*i, x = a[i-1];
- while (j < p) {
- if (j < p) {
- if (a[j-1] > a[j]) {
- j++;
- }
- if (x <= a[j-1]) {
- goto end;
- }
- a[i-1] = a[j-1];
- i = j;
- j = 2*i;
- }
- }
- end:
- a[i-1] = x;
- }
- void stogowe(int n, int *a) {
- int q = (n/2) + 1;
- int p = n;
- int x;
- while (q > 1) {
- --q;
- przesiewanie(q, p, a);
- }
- while (p > 1) {
- x = a[0];
- a[0] = a[p-1];
- a[p-1] = x;
- --p;
- przesiewanie(q, p, a);
- }
- }
- int main() {
- int n = 30;
- int tab[n] = {-2, 86, -3, 51, 67, -14, 15, 9, 28, 1, 2, 6, 33, 13, 7, -4, 5, 95, 18, 12, 4, 50, 99, 8, 41, 77, 60, 3, 31};
- stogowe(n, tab);
- cout<<"\nElementy posortowane:\n";
- for(int i=0; i<n; i++)
- cout<<tab[i]<<" ";
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement