📄 insertsort.java
字号:
import java.applet.Applet;
import java.awt.*;
import java.awt.event.*;
public class InsertSort extends Applet implements ActionListener //定义主类
{
Label prompt = new Label("请输入欲排序的整数数据(最多10个):");
TextField input = new TextField(5);
Button sortbtn = new Button("排序");
int[] DataArray = new int[10]; //保存待排序数据的数组
int DataInputed = 0; //已输入数据的统计
int[][] SortPro = new int[11][10]; //保存排序过程的二维数组
public void init() //初始化
{
add(prompt); //将提示、输入区域、按钮加入Applet
add(input);
add(sortbtn);
input.addActionListener(this);
sortbtn.addActionListener(this);
}
public void paint(Graphics g)//打印排序全过程
{
for(int i=0;i<SortPro.length;i++) //二维数组的行数
for(int j=0;j<SortPro[i].length;j++) //二维数组第i行中的数据个数
g.drawString(Integer.toString(SortPro[i][j]),10+30*j,40+20*i);
}
public void actionPerformed(ActionEvent e)
{
if(e.getSource() == input)//用户在input中输入并回车时
{ //记录数据
DataArray[DataInputed++] = Integer.parseInt(input.getText());
if(DataInputed < 10)
{
prompt.setText("已输入" + DataInputed + "个数据,请继续");
input.setText(""); //准备输入下一个数据
}
else //已输入10个数据
{
prompt.setText("已输入10个数据,不能再输入了");
input.setVisible(false); //隐藏其输入区域
}
}
if(e.getSource() == sortbtn) //用户单击按钮,启动排序过程
{
for(int i=0;i<DataArray.length;i++) //记录未排序的原始数据
SortPro[0][i] = DataArray[i];
SortProcedure(); //调用排序方法
repaint();
}
}
void SortProcedure()
{
int pass,i,temp;
for(pass=1;pass<DataArray.length;pass++)//插入多次,无序子列在减少
{
temp = DataArray[pass]; //本次插入到有序子列中的数据
for(i=pass-1;i>=0;i--)//一次插入过程,有序子列在增长
if(DataArray[i] <= temp)//选择有序子列中的合适位置
break;
else
DataArray[i+1] = DataArray[i];//有序子列腾出位置给新插入的数据
DataArray[i+1] = temp;//i+1是合适的位置,插入新数据
for(i=0;i<DataArray.length;i++)
SortPro[pass][i] = DataArray[i];//记录本轮选择后数据排列情况
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -