算法分析:找出最好、最适合的算法来解决问题,而算法复杂度可以分为两个部分: 时间复杂度和空间复杂度、稳定性。
(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();
}
}