数组 桶排序

来源:互联网 发布:淘宝现货指的是什么 编辑:程序博客网 时间:2024/05/01 13:15
import java.awt.*;import java.awt.event.*;import javax.swing.*;import java.text.*;public class Exercise7_28 extends JApplet implements ActionListener{final int MAX=10;int array[];int temp[][];int times=0;JTextArea outputArea;JScrollPane scroller;JButton start;DecimalFormat twoDigits=new DecimalFormat("00");public void init(){array=new int[MAX];temp=new int[MAX][MAX];resetBucket();Container container=getContentPane();container.setLayout(new FlowLayout());outputArea=new JTextArea(20, 50);outputArea.setFont(new Font("Monospaced", Font.PLAIN, 12));scroller=new JScrollPane(outputArea);container.add(scroller);start=new JButton("start");start.addActionListener(this);container.add(start);}public void actionPerformed(ActionEvent actionEvent){for(int counter=0; counter<MAX; counter++){array[counter]=(int)(Math.random()*100+1);}outputArea.setText("");showOriginArray();for(int counter=0; counter<MAX; counter++){resetBucket();bucketSort(times);resetArray();putBack();times++;showIt();}times=0;}public void showOriginArray(){String output="";output+="OriginalArray!\n    0   1   2   3   4   5   6   7   8   9 \n  ";for(int counter=0; counter<MAX; counter++){if(array[counter]==0){output+="    ";}elseoutput+="  " + twoDigits.format(array[counter]);}output+="\n";outputArea.append(output);}public void showIt(){String output="";output+="    0   1   2   3   4   5   6   7   8   9 \n";for(int row=0; row<MAX; row++){output+="\n";output+=row + ":";for(int column=0; column<MAX; column++){if(temp[row][column]==0){output+="    ";}elseoutput+= "  " + twoDigits.format(temp[row][column]);}}output+="\n    0   1   2   3   4   5   6   7   8   9 \n  ";for(int counter=0; counter<MAX; counter++){if(array[counter]==0){output+="    ";}elseoutput+="  " + twoDigits.format(array[counter]);}outputArea.append("第"+ times + "次:\n" + output + "\n\n");}public void bucketSort(int times){for(int counter=0; counter<MAX; counter++){int position=array[counter];position/=Math.pow(10,times);position%=10;put(array[counter],position);}}public void put(int number, int position){for(int counter=0; counter<MAX; counter++){if(temp[position][counter]==0){temp[position][counter]=number;break;}}}public void resetArray(){for(int counter=0; counter<MAX; counter++){array[counter]=0;}}public void putBack(){int counter=0;for(int row=0; row<MAX; row++){for(int column=0; column<MAX; column++){if(temp[row][column]!=0&&counter<MAX){array[counter++]=temp[row][column];}}}}public void resetBucket(){for(int i=0; i<MAX; i++){for(int j=0; j<MAX; j++){temp[i][j]=0;}}}}