import java.io.*;
import java.awt.*;
import java.applet.Applet;
import java.awt.event.*;
import java.util.*;
/*<applet code =NewApplet.class width = 600 height = 200></applet>*/
public class NewApplet extends Applet implements ActionListener
{
Button b1 = new Button("排序");
Button b2 = new Button("插入");
Label lab1 = new Label("请输入数据:");
Label lab2 = new Label("排序前的数据:");
Label lab3 = new Label("排序后的数据:");
Label lab4 = new Label("插入后的数据:");
TextField f1 = new TextField(20);
String a;//获取输入到文本框中的字符串
StringBuffer sa = new StringBuffer();
StringBuffer sb = new StringBuffer();
StringBuffer sc = new StringBuffer();
String s[];/*以空格分割字符后,s存放分割后的字符串数组*/;
int s3[];//存放字符串数组转换成整型数组
public void init()
{
setLayout(null); //界面控件布局与加载
add(lab1);
lab1.setBounds(10, 10, 100, 20);
add(f1);
f1.setBounds(120, 10, 300, 20);
add(b1);
b1.setBounds(10, 40, 80, 30);
add(b2);
b2.setBounds(100, 40, 80, 30);
add(lab2);
lab2.setBounds(10, 80, 500, 20);
add(lab3);
lab3.setBounds(10, 120, 500, 20);
add(lab4);
lab4.setBounds(10, 160, 500, 20);
b1.addActionListener(this);
b2.addActionListener(this);
}
public String sort() //数据排序
{
for (int i = 1; i < s3.length; i++)
{ for (int j = 0; j < s3.length - i; j++)
{
if (s3[j] > s3[j + 1])
{
int t ;
t = s3[j];
s3[j] = s3[j + 1];
s3[j + 1] = t;
}
}
}
for (int i = 0; i < s3.length; i++)
sa.append(s3[i] + " ");
return sa.toString();
}
//这个插入方法有问题
public String insert()//插入排序
{f1.setVisible(true);
int x=Integer.parseInt(f1.getText());
int i=0;
while(i<s3.length)
if(x>=s3[i])
i++;
for(int j=s3.length;j>=i;j--)
s3[j]=s3[j-1];
s3[i]=x;
for (int k=0;k<s3.length;k++)
sc.append(s3[k] + " ");
return sc.toString();
}
public String PrintNum()
{ for (int i = 0; i < s.length; i++)
sb.append(s[i] + " ");
return sb.toString();
}
public void actionPerformed(ActionEvent e)
{ a = f1.getText();//获取输入到文本框中的字符串
s = a.split(" ");/*以空格分割字符后,s存放分割后的字符串数组*/
s3=new int[s.length];//为整形数组s3分配内存空间
for(int i =0 ;i<s.length;i++)
s3[i] = Integer.parseInt(s[i]);/*将字符串数组转换成整型数组存放在s3数组中。方便后面的排序*/
if (e.getSource() == b1) //如果选择了排序
{
lab2.setText("排序前的数据:" + PrintNum());
lab3.setText("排序后的数据:" + sort());
f1.setText(""); }
if (e.getSource() == b2) //如果选择了插入
{
lab4.setText("插入后的数据:"+insert());
}
}
}
import java.awt.*;
import java.applet.Applet;
import java.awt.event.*;
import java.util.*;
/*<applet code =NewApplet.class width = 600 height = 200></applet>*/
public class NewApplet extends Applet implements ActionListener
{
Button b1 = new Button("排序");
Button b2 = new Button("插入");
Label lab1 = new Label("请输入数据:");
Label lab2 = new Label("排序前的数据:");
Label lab3 = new Label("排序后的数据:");
Label lab4 = new Label("插入后的数据:");
TextField f1 = new TextField(20);
String a;//获取输入到文本框中的字符串
StringBuffer sa = new StringBuffer();
StringBuffer sb = new StringBuffer();
StringBuffer sc = new StringBuffer();
String s[];/*以空格分割字符后,s存放分割后的字符串数组*/;
int s3[];//存放字符串数组转换成整型数组
public void init()
{
setLayout(null); //界面控件布局与加载
add(lab1);
lab1.setBounds(10, 10, 100, 20);
add(f1);
f1.setBounds(120, 10, 300, 20);
add(b1);
b1.setBounds(10, 40, 80, 30);
add(b2);
b2.setBounds(100, 40, 80, 30);
add(lab2);
lab2.setBounds(10, 80, 500, 20);
add(lab3);
lab3.setBounds(10, 120, 500, 20);
add(lab4);
lab4.setBounds(10, 160, 500, 20);
b1.addActionListener(this);
b2.addActionListener(this);
}
public String sort() //数据排序
{
for (int i = 1; i < s3.length; i++)
{ for (int j = 0; j < s3.length - i; j++)
{
if (s3[j] > s3[j + 1])
{
int t ;
t = s3[j];
s3[j] = s3[j + 1];
s3[j + 1] = t;
}
}
}
for (int i = 0; i < s3.length; i++)
sa.append(s3[i] + " ");
return sa.toString();
}
//这个插入方法有问题
public String insert()//插入排序
{f1.setVisible(true);
int x=Integer.parseInt(f1.getText());
int i=0;
while(i<s3.length)
if(x>=s3[i])
i++;
for(int j=s3.length;j>=i;j--)
s3[j]=s3[j-1];
s3[i]=x;
for (int k=0;k<s3.length;k++)
sc.append(s3[k] + " ");
return sc.toString();
}
public String PrintNum()
{ for (int i = 0; i < s.length; i++)
sb.append(s[i] + " ");
return sb.toString();
}
public void actionPerformed(ActionEvent e)
{ a = f1.getText();//获取输入到文本框中的字符串
s = a.split(" ");/*以空格分割字符后,s存放分割后的字符串数组*/
s3=new int[s.length];//为整形数组s3分配内存空间
for(int i =0 ;i<s.length;i++)
s3[i] = Integer.parseInt(s[i]);/*将字符串数组转换成整型数组存放在s3数组中。方便后面的排序*/
if (e.getSource() == b1) //如果选择了排序
{
lab2.setText("排序前的数据:" + PrintNum());
lab3.setText("排序后的数据:" + sort());
f1.setText(""); }
if (e.getSource() == b2) //如果选择了插入
{
lab4.setText("插入后的数据:"+insert());
}
}
}
import java.util.Arrays;public class Hello {
/**
* 在一组有序数中插入一个数
* @param ns 是一个组有序数
* @param value 需要插入到有序数中的数
*/
public static void insert(int[] ns, int value) {
for (int i = 0; i < ns.length; ++i) {
if (ns[i] >= value) { // 找到需要插入的位置
for (int j = ns.length - 1; j > i; --j) {
ns[j] = ns[j - 1];
} ns[i] = value;
break;
}
}
} public static void main(String[] args) {
int[] ns = {1, 2, 3, 4, 6, 7, 8};
int value = 5; System.out.println("Before insert: " + Arrays.toString(ns));
insert(ns, value);
System.out.println("After insert: " + Arrays.toString(ns));
}
}
package com.zf.test;import java.util.Arrays;public class BinaryInsert { public static void main(String[] args) { BinaryInsert bt = new BinaryInsert(); int[] array = new int[]{1 , 3 , 6 , 8, 30 , 49 , 60 , 70 , 83 , 85}; System.out.println(Arrays.toString(array)); array = bt.insert(array , 50);
System.out.println(Arrays.toString(array)); } public int[] insert(int[] sortArray , int value){
int index = findInsertIndex(sortArray , value , 0 , sortArray.length); //找到插入位置
int[] newArray = new int[sortArray.length + 1];
newArray[index] = value ;
System.arraycopy(sortArray, 0, newArray, 0 , index );
System.arraycopy(sortArray, index, newArray, index + 1 , sortArray.length - index);
return newArray ; //返回新数组
} //找到value适合插入的位置
public int findInsertIndex(int[] sortArray , int value , int left , int right){
int middleIndex = (right - left) / 2 + left ;
int middleValue = sortArray[middleIndex] ;
if(right - left < 2){
if(value > sortArray[right -1 ])
return right;
else if(value > sortArray[left]){
return left + 1;
}else{
return left;
}
}else if(middleValue < value){
return findInsertIndex(sortArray , value , middleIndex + 1 , right);
}else if(middleValue > value){
return findInsertIndex(sortArray , value , left , middleIndex );
}else{
return middleIndex + 1;
}
}}