桶排序

来源:互联网 发布:淘宝分销平台网址 编辑:程序博客网 时间:2024/04/28 08:33

package homeWork;

import java.awt.Container;

import javax.swing.JApplet;
import javax.swing.JTextArea;

public class BucketSort extends JApplet {//桶排序
 private static final long serialVersionUID = 1L;

 JTextArea outpuTextArea=new JTextArea();
 String output="";
 int OneArray[]= {97,100,3,65};
 int TwoArray[][]=new int[10][4];

 public void init() {
  Container container=getContentPane();
  container.add(outpuTextArea);

  int Num=3;//最大的位数

  output+="The original array is: ";
  Display();

  for(int i=1;i<=Num;i++) {
   distributing(i);//分布遍历
   collect();//收集遍历
  }

  output+="After sort:";
  Display();

  outpuTextArea.setText(output);
 }

 public void distributing(int i) {//分布遍历
  int n=1;
  int m=1;
  
  for(;n<=i;n++)
   m=m*10;
  
//  output+="n "+m+" ";

  int mark;//标记各个位置的值
  int Bmark[]=new int[10];
  int temp[]=new int[4];
  int a;

  for(int c=0;c<Bmark.length;c++)
   Bmark[c]=0;
  
  for(int c=0;c<OneArray.length;c++) {
   temp[c]=OneArray[c];
   temp[c]=temp[c]/(m/10);
  }

  for(a=0;a<temp.length;a++) {
   mark=temp[a]%10;
   /*if(i==3) {
    output+="temp "+temp[a]+" ";
    output+="mark "+mark+" ";
    }*/
   TwoArray[mark][Bmark[mark]]=OneArray[a];
   Bmark[mark]++;//标记在同一行的情况
  }
 }

 public void collect() {//收集遍历
  int i=0;

  for(int r=0;r<=9;r++)
   for(int c=0;c<4;c++)
    if(TwoArray[r][c] != 0) {
     //     if(i<4)
     OneArray[i]=TwoArray[r][c];
     output+=TwoArray[r][c]+" ";
     TwoArray[r][c]=0;
     i++;
    }
  output+="/n";
 }

 /* public void initial() {
  for(int r=0;r<=9;r++)
   for(int c=0;c<4;c++)
    TwoArray[r][c]=0;
 }*/

 public void Display() {
  for(int i=0;i<OneArray.length;i++)
   output+=OneArray[i]+" ";
  output+="/n";
 }
}

 

  诶,这本来是个很简单的程序的,可是本人一个不小心一个地方弄错了,愣是弄了一晚上才弄好,所以决定还是发出来大家看看了,呵呵

原创粉丝点击