[英]How to sort a bucketsort in descending order
please help me, I really cant figure it out.I just found this code on the internet about bucket sort and was wondering if it could be sorted in descending order?请帮帮我,我真的想不通。我刚刚在互联网上找到了这个关于桶排序的代码,想知道它是否可以按降序排序? I tried using reverse() but it doesnt seem to work it still comes out as ascending order.
我尝试使用 reverse() 但它似乎不起作用它仍然以升序出现。
import java.util.*;
public class BucketSort {
public static void main(String[] args) {
int[] intArr = {47, 85, 10, 45, 16, 34, 67, 80, 34, 4, 0, 99};
//int[] intArr = {21,11,33,70,5,25,65,55};
System.out.println("Original array- " + Arrays.toString(intArr));
bucketSort(intArr, 10);
System.out.println("Sorted array after bucket sort- " + Arrays.toString(intArr));
}
private static void bucketSort(int[] intArr, int noOfBuckets){
// Create bucket array
List<Integer>[] buckets = new List[noOfBuckets];
// Associate a list with each index
// in the bucket array
for(int i = 0; i < noOfBuckets; i++){
buckets[i] = new LinkedList<>();
}
// Assign numbers from array to the proper bucket
// by using hashing function
for(int num : intArr){
//System.out.println("hash- " + hash(num));
buckets[hash(num)].add(num);
}
// sort buckets
for(List<Integer> bucket : buckets){
Collections.sort(bucket);
}
int i = 0;
// Merge buckets to get sorted array
for(List<Integer> bucket : buckets){
for(int num : bucket){
intArr[i++] = num;
}
}
}
// A very simple hash function
private static int hash(int num){
return num/10;
}
}
Since you didn't pass the comparator while sorting the Collection, so the sorting is performed in ascending order by default.由于您在对 Collection 进行排序时没有传递比较器,因此默认情况下按升序进行排序。
import java.util.*;
public class BucketSort {
public static void main(String[] args) {
int[] intArr = { 47, 85, 10, 45, 16, 34, 67, 80, 34, 4, 0, 99 };
// int[] intArr = {21,11,33,70,5,25,65,55};
System.out.println("Original array- " + Arrays.toString(intArr));
bucketSort(intArr, 10);
System.out.println("Sorted array after bucket sort- " + Arrays.toString(intArr));
}
private static void bucketSort(int[] intArr, int noOfBuckets) {
// Create bucket array
List<Integer>[] buckets = new List[noOfBuckets];
// Associate a list with each index
// in the bucket array
for (int i = 0; i < noOfBuckets; i++) {
buckets[i] = new LinkedList<>();
}
// Assign numbers from array to the proper bucket
// by using hashing function
for (int num : intArr) {
// System.out.println("hash- " + hash(num));
buckets[hash(num)].add(num);
}
// sort buckets
for (List<Integer> bucket : buckets) {
Collections.sort(bucket, Collections.reverseOrder());
}
int i = 0;
// Merge buckets to get sorted array
for(int j = buckets.length - 1; j >= 0; j--){
for (int num : buckets[j]) {
intArr[i++] = num;
}
}
}
// A very simple hash function
private static int hash(int num) {
return num / 10;
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.