public int [ ] sortByBits ( int [ ] arr) {
String[ ] Binary = new String [ arr. length] ;
for ( int i= 0 ; i< arr. length; i++ ) {
Binary[ i] = Integer. toBinaryString ( arr[ i] ) ;
}
int [ ] jilu = new int [ arr. length] ;
for ( int i= 0 ; i< arr. length; i++ ) {
jilu[ i] = play ( Binary[ i] ) ;
}
for ( int i= 0 ; i< arr. length; i++ ) {
for ( int j= i+ 1 ; j< arr. length; j++ ) {
if ( jilu[ i] > jilu[ j] ) {
int item = jilu[ i] ;
jilu[ i] = jilu[ j] ;
jilu[ j] = item;
int items = arr[ i] ;
arr[ i] = arr[ j] ;
arr[ j] = items;
} else if ( jilu[ i] == jilu[ j] && arr[ i] > arr[ j] ) {
int items = arr[ i] ;
arr[ i] = arr[ j] ;
arr[ j] = items;
}
}
}
return arr;
}
public static int play ( String Binary) {
char [ ] chars = Binary. toCharArray ( ) ;
int num= 0 ;
for ( char c: chars) {
if ( c == '1' ) num++ ;
}
return num;
}
public int [ ] sortByBits ( int [ ] arr) {
int [ ] ints = new int [ arr. length] ;
for ( int i= 0 ; i< arr. length; i++ ) {
ints[ i] = Integer. bitCount ( arr[ i] ) * 10000000 + arr[ i] ;
}
Arrays. sort ( ints) ;
for ( int i= 0 ; i< ints. length; i++ ) {
ints[ i] = ints[ i] % 10000000 ;
}
return ints;
}