Advertisement
Guest User

Untitled

a guest
Mar 22nd, 2018
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.09 KB | None | 0 0
  1. #include <iostream>
  2. #include <cstdlib>
  3. #include <ctime>
  4. using namespace std;
  5. void wypisz (int * tab,int n)
  6. {
  7.     for (int i=0;i<n;i++)
  8.         cout << tab[i] << " ";
  9.     cout << endl;
  10. }
  11. void c_sort(int pom[][2],int n,int pos)
  12. {
  13.     int tmp[n][2];
  14.     int val[n]={};
  15.     for (int i=0;i<n;i++) val[pom[i][pos]]++;
  16.     for (int i=1;i<n;i++) val[i]+=val[i-1];
  17.     for (int i=n-1;i>=0;i--)
  18.         {
  19.             int j=--val[pom[i][pos]];
  20.             tmp[j][0]=pom[i][0];
  21.             tmp[j][1]=pom[i][1];
  22.         }
  23.     for (int i=0;i<n;i++)
  24.         {
  25.             pom[i][0]=tmp[i][0];
  26.             pom[i][1]=tmp[i][1];
  27.         }
  28. }
  29. void Radix(int * tab,int n)
  30. {
  31.     int pom[n][2];
  32.     for (int i=0;i<n;i++)
  33.     {
  34.         pom[i][1]=tab[i]%n;
  35.         pom[i][0]=tab[i]/n;
  36.     }
  37.     c_sort(pom,n,1);
  38.     c_sort(pom,n,0);
  39.     for (int i=0;i<n;i++)
  40.         tab[i]=n*pom[i][0]+pom[i][1];
  41. }
  42. int main()
  43. {
  44.     int n;
  45.     cin >> n;
  46.     int tab[n];
  47.     srand(time(NULL));
  48.     for (int i=0;i<n;i++)
  49.         tab[i]=rand()%(n*n);
  50.     wypisz(tab,n);
  51.     Radix(tab,n);
  52.     wypisz(tab,n);
  53. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement