UÂżytkownik
wersja nie testowana - wszelkie wyszukiwanie błędów mile widziane
#include <iostream> using namespace std; /*********************************** Zliczanie jedynek *********************/ int zliczanie(int a) { int b,c,d,e,f; int mask1=1431655765, mask2=858993459, mask3=252645135,mask4=16711935,mask5=65535; b=(a & mask1)+((a & ~(mask1))>>1); c=(b & mask2)+((b & ~(mask2))>>2); d=(c & mask3)+((c & ~(mask3))>>4); e=(d & mask4)+((d & ~(mask4))>>8); f=(e & mask5)+((e & ~(mask5))>>16); return (f); } /**************************************************************************/ /************************** Sortowanie ze przez wstawianie ****************/ void sortowanie(int tab[]) { int il[10]; for (int i=0; i<10; i++) { il[i]=zliczanie(tab[i]); } for (int i=1; i<10; i++) { int q,w,k=1; q=il[i]; w=tab[i]; while (q<il[i-k]&&(i-k+1!=0)) { il[i-k+1]=il[i-k]; tab[i-k+1]=tab[i-k]; k++; } il[i-k+1]=q; tab[i-k+1]=w; } for (int i=0;i<10;i++) // drukowanie wyników { cout << tab[i] << " "; } } /****************************************************************************/ int main () { int tab[10]; for (int i=0;i<10;i++) { cout << "podaj liczbę nr " << i+1 << ": "; cin >> tab[i]; } sortowanie(tab); system ("pause"); }
Offline
Administrator
Wersja testowana 100% sprawna no ale kuleje na wydajności
#include <iostream> using namespace std; int liczjed(int); int liczjed(int li){ int mask1,mask2; mask1= li & 85; mask2= li & 170; li= mask1 + (mask2>>1); mask1= li & 51; mask2= li & 204; li= mask1 + (mask2>>2); mask1= li & 15; mask2= li & 240; li= mask1 + (mask2>>4); mask1= li & 255; mask2= li & 65280; li= mask1 + (mask2>>8); mask1= li & 65535; mask2= li & 0xFFFF0000; li= mask1 + (mask2>>16); return li; } int Tab[10]; void sort(); void sort(){ int i,j,p,zm=0; for(i=0;i<10-1;i++) { p = i; for(j=i+1;j<10;j++) { if(liczjed(Tab[j])<liczjed(Tab[i])) {p=j; zm=Tab[p]; Tab[p]=Tab[i]; Tab[i]=zm;} } } } int main() { int i=0; cout << "Podaj 10 liczb calkowitych:\n"; for(i=0;i<10;i++) {cin >> Tab[i]; cout << endl;} for(i=0;i<10;i++) {cout << Tab[i] <<", ";} cout << endl; sort(); for(i=0;i<10;i++) {cout << Tab[i] <<", ";} cout << endl; system("PAUSE"); }
Offline