排序算法---桶排序

  算法分析:找出最好、最适合的算法来解决问题,而算法复杂度可以分为两个部分:  时间复杂度和空间复杂度、稳定性。

      (1)快而简单的排序---桶排序

      桶排序的适用场景:数据分布相对比较均匀或数据跨度范围并不是很大。

      桶排序的时间复杂度: O(n+m),n为待排序的元素的个数,m为桶的个数。

      

      桶排序的实现代码如下:

package com.threeTop.www;

/**
 * 桶排序实现
 * @author wjgs
 *
 */
public class BucketSort {
	
	 private int[] buckets;
	 private int[] array;
	 
	 //构造函数实现初始化
	 public BucketSort(int range,int[]array)
	 {
		 this.buckets=new int[range];  //申明桶的数量
		 this.array=array;
		 
	 }
	 
	 /**
	  * 排序操作,即放到桶里面
	  * 
	  */
	 public void sort()
	 {
		 if(array!=null&&array.length>1)
		 {
			 for(int i=0;i<array.length;i++)
			 {
				 buckets[array[i]]++;
			 }
		 }
	 }
	 /**
	  * 从大到小排序
	  * @param args
	  */
	 public  void print()
	 {
		 //排序输出数据
		 for(int i=buckets.length-1;i>=0;i--)
		 {
			 //元素中的值为几,就说明有多少个相同值的元素,就输出几遍
			 for(int j=0;j<buckets[i];j++)
			 {
				 System.out.print(i+"  ");
			 }
			 
		 }
	 }
	 
	 

	public static void main(String[] args) {
		// TODO Auto-generated method stub
           
		int []array={5,9,1,9,5,3,7,6,1};
		BucketSort bucketsort=new BucketSort(11,array);//总共0-10 共11个桶
		bucketsort.sort();
		bucketsort.print();
	}

}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值