int Fun(int x){ int res=0; while (x) res+=x&1,x>>=1; return res; } int Mycmp(const void* a,const void* b){ return (Fun(*(int*)a) - Fun(*(int*)b))? Fun(*(int*)a) - Fun(*(int*)b):*(int*)a - *(int*)b; } int* sortByBits(int* arr, int arrSize, int* returnSize){ qsort(arr,arrSize,sizeof(int),Mycmp); *returnSize = arrSize; return arr; }