import
java.util.*;
class
GFG
{
static
void
bucketSort(Vector<Double> arr,
int
n)
{
@SuppressWarnings
(
"unchecked"
)
Vector<Double> b[] =
new
Vector[n];
for
(
int
i =
0
; i < b.length; i++)
b[i] =
new
Vector<Double>();
for
(
int
i =
0
; i < n; i++)
{
int
bi = (
int
)(n*arr.get(i));
b[bi].add(arr.get(i));
}
for
(
int
i =
0
; i < n; i++)
Collections.sort(b[i]);
int
index =
0
;
arr.clear();
for
(
int
i =
0
; i < n; i++)
for
(
int
j =
0
; j < b[i].size(); j++)
arr.add(b[i].get(j));
}
static
void
sortMixed(
double
arr[],
int
n)
{
Vector<Double>Neg =
new
Vector<>();
Vector<Double>Pos =
new
Vector<>();
for
(
int
i =
0
; i < n; i++)
{
if
(arr[i] <
0
)
Neg.add (-
1
* arr[i]) ;
else
Pos.add (arr[i]) ;
}
bucketSort(Neg, (
int
)Neg.size());
bucketSort(Pos, (
int
)Pos.size());
for
(
int
i =
0
; i < Neg.size(); i++)
arr[i] = -
1
* Neg.get( Neg.size() -
1
- i);
for
(
int
j = Neg.size(); j < n; j++)
arr[j] = Pos.get(j - Neg.size());
}
public
static
void
main(String[] args)
{
double
arr[] = {-
0.897
,
0.565
,
0.656
,
-
0.1234
,
0
,
0.3434
};
int
n = arr.length;
sortMixed(arr, n);
System.out.print(
"Sorted array is \n"
);
for
(
int
i =
0
; i < n; i++)
System.out.print(arr[i] +
" "
);
}
}