java桶排序代码 桶排序 java

桶排序java怎么处理重复的元素桶排序的核心思想是 , 将[0,1)分为n个大小相同的子区间,
* 上一个区间里的元素都比下一个区间里的元素?。?然后对
* 所有区间里的元素排序,最后顺序输出所有区间里的元素,
* 达到对所有元素排序的目的 。
* @author yuncong
*
*/
public class BucketSort {
public void sort(Double[] a) {
int n = a.length;
/**
* 创建链表(桶)集合并初始化,集合中的链表用于存放相应的元素
*/
int bucketNum = 10; // 桶数
LinkedListLinkedListDouble buckets = new LinkedListLinkedListDouble();
for(int i = 0; ibucketNum; i++){
LinkedListDouble bucket = new LinkedListDouble();
buckets.add(bucket);
Java几种简单的排序源代码给你介绍4种排序方法及源码,供参考
1.冒泡排序
主要思路: 从前往后依次交换两个相邻的元素,大的交换到后面,这样每次大的数据就到后面,每一次遍历,最大的数据到达最后面,时间复杂度是O(n^2) 。
public static void bubbleSort(int[] arr){
for(int i =0; iarr.length - 1; i++){
for(int j=0; jarr.length-1; j++){
if(arr[j]arr[j+1]){
arr[j] = arr[j]^arr[j+1];
arr[j+1] = arr[j]^arr[j+1];
arr[j] = arr[j]^arr[j+1];
}
}
}
}
2.选择排序
主要思路:每次遍历序列,从中选取最小的元素放到最前面 , n次选择后,前面就都是最小元素的排列了 , 时间复杂度是O(n^2) 。
public static void selectSort(int[] arr){
for(int i = 0; i arr.length -1; i++){
for(int j = i+1; jarr.length; j++){
if(arr[j]arr[i]){
arr[j] = arr[j]^arr[i];
arr[i] = arr[j]^arr[i];
arr[j] = arr[j]^arr[i];
}
}
}
}
3.插入排序
主要思路:使用了两层嵌套循环,逐个处理待排序的记录 。每个记录与前面已经排好序的记录序列进行比较,并将其插入到合适的位置 , 时间复杂度是O(n^2) 。
public static void insertionSort(int[] arr){
int j;
for(int p = 1; parr.length; p++){
int temp = arr[p];//保存要插入的数据
//将无序中的数和前面有序的数据相比,将比它大的数,向后移动
for(j=p; j0temp arr[j-1]; j--){
arr[j] = arr[j-1];
}
//正确的位置设置成保存的数据
arr[j] = temp;
}
}
4.希尔排序
主要思路:用步长分组,每个分组进行插入排序,再慢慢减小步长,当步长为1的时候完成一次插入排序 , 希尔排序的时间复杂度是:O(nlogn)~O(n2),平均时间复杂度大致是O(n^1.5)
public static void shellSort(int[] arr){
int j ;
for(int gap = arr.length/2; gap0 ; gap/=2){
for(int i = gap; iarr.length; i++){
int temp = arr[i];
for(j = i; j=gaptemparr[j-gap]; j-=gap){
arr[j] = arr[j-gap];
}
arr[j] = temp;
【java桶排序代码 桶排序 java】}
}
}
java 桶排序 输入n个0~1000之间的整数,将它们从大到小排序 。谢谢啦import java.util.Scanner;
public class Help {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int size=sc.nextInt();//记录次数n
int[] s=new int[size];//储存数字的数组
for(int i=0;isize;i++){
int p=sc.nextInt();
if(0pp1000){//进行判断
s[i]=p;
}
else{
System.out.println("您输入的数字非法!");}
}
Arrays.sort(s);//从小到大排序
for(int i=0;i=(int)size/2;i++){//再将顺序倒过来
int l=s.length;
int ss=s[i];
s[i]=s[l-1-i];
s[l-1-i]=ss;
}
for(int i=0;isize;i++) {
System.out.println(s[i]);

推荐阅读