import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
import java.util.*;public class Sort extends JFrame
{
JTextField jtf;
JButton insertButton;
JButton bubbleButton;
JButton selectButton;
JButton quickButton;
Random ran=null;
int a[],b[];
GregorianCalendar gc1;
GregorianCalendar gc2;
static final int N=100000; Sort()
{
insertButton=new JButton("InsertSort");
bubbleButton=new JButton("BubbleSort");
selectButton=new JButton("SelectSort");
quickButton=new JButton("QuickSort");
jtf=new JTextField(12);
ran=new Random();
a=new int[N];
b=new int[N];
for(int i=0;i<N;i++)
{a[i]=ran.nextInt(N);}
insertButton.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e)
{ reset(N);gc1=new GregorianCalendar();
insertSort(b,N);gc2=new GregorianCalendar();
jtf.setText("耗时:"+String.valueOf(gc2.getTimeInMillis()-gc1.getTimeInMillis())+"毫秒");
}});
bubbleButton.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e)
{ reset(N);gc1=new GregorianCalendar();
bubbleSort(b,N);gc2=new GregorianCalendar();
jtf.setText("耗时:"+String.valueOf(gc2.getTimeInMillis()-gc1.getTimeInMillis())+"毫秒");
}});
selectButton.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e)
{ reset(N);gc1=new GregorianCalendar();
selectSort(b,N);gc2=new GregorianCalendar();
jtf.setText("耗时:"+String.valueOf(gc2.getTimeInMillis()-gc1.getTimeInMillis())+"毫秒");
}});
quickButton.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e)
{ reset(N);gc1=new GregorianCalendar();
quickSort(b,0,N-1);gc2=new GregorianCalendar();
jtf.setText("耗时:"+String.valueOf(gc2.getTimeInMillis()-gc1.getTimeInMillis())+"毫秒");
}});
getContentPane().setLayout(new GridLayout(5,1));
getContentPane().add(insertButton);
getContentPane().add(bubbleButton);
getContentPane().add(selectButton);
getContentPane().add(quickButton);
getContentPane().add(jtf);
setLocation(460,120);
setTitle("排序");
setVisible(true);
pack();
validate();
setDefaultCloseOperation(EXIT_ON_CLOSE);
} public void reset(int n)
{
for (int i=0;i<n;i++)
{
b[i]=a[i];
}
}
public void display(int n)
{
for (int i=0;i<n;i++)
{
System.out.print(b[i]+" ");
}
}
public static void main(String args[])
{ new Sort(); } public void insertSort(int a[], int n)
{
int j,t;
for(int i=1;i<n;i++)
{
t=a[i];
for(j=i-1;j>=0&&t<a[j];j--)
a[j+1]=a[j];
a[j+1]=t;
}
} public void bubbleSort(int a[], int n)
{
int t;
for(int i=0;i<n;i++)
{
for(int j=1;j<n-i;j++)
{ if(a[j-1]>a[j]) {t=a[j];a[j]=a[j-1];a[j-1]=t;}}
}
}
public void selectSort(int a[],int n)
{
int i,j,k,t;
for(i=0;i<n;i++)
{
k=i;
for(j=i+1;j<n;j++)
{
if(a[k]>a[j])
{
k=j;
}
}
t=a[i];a[i]=a[k];a[k]=t;
}
}
public void quickSort(int a[],int low,int high)
{
int t;
int i=low;
int j=high;
if(low<high)
{
t=a[i];
while(i!=j)
{
while(a[j]>t&&i<j) j--;
if(i<j) a[i++]=a[j];
while(a[i]<=t&&i<j) i++;
if(i<j) a[j--]=a[i];
}
a[i]=t;
quickSort(a,low,i-1);
quickSort(a,i+1,high);
}
}
}
为什么在quickSort里有时候是0?
import java.awt.event.*;
import java.awt.*;
import java.util.*;public class Sort extends JFrame
{
JTextField jtf;
JButton insertButton;
JButton bubbleButton;
JButton selectButton;
JButton quickButton;
Random ran=null;
int a[],b[];
GregorianCalendar gc1;
GregorianCalendar gc2;
static final int N=100000; Sort()
{
insertButton=new JButton("InsertSort");
bubbleButton=new JButton("BubbleSort");
selectButton=new JButton("SelectSort");
quickButton=new JButton("QuickSort");
jtf=new JTextField(12);
ran=new Random();
a=new int[N];
b=new int[N];
for(int i=0;i<N;i++)
{a[i]=ran.nextInt(N);}
insertButton.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e)
{ reset(N);gc1=new GregorianCalendar();
insertSort(b,N);gc2=new GregorianCalendar();
jtf.setText("耗时:"+String.valueOf(gc2.getTimeInMillis()-gc1.getTimeInMillis())+"毫秒");
}});
bubbleButton.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e)
{ reset(N);gc1=new GregorianCalendar();
bubbleSort(b,N);gc2=new GregorianCalendar();
jtf.setText("耗时:"+String.valueOf(gc2.getTimeInMillis()-gc1.getTimeInMillis())+"毫秒");
}});
selectButton.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e)
{ reset(N);gc1=new GregorianCalendar();
selectSort(b,N);gc2=new GregorianCalendar();
jtf.setText("耗时:"+String.valueOf(gc2.getTimeInMillis()-gc1.getTimeInMillis())+"毫秒");
}});
quickButton.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e)
{ reset(N);gc1=new GregorianCalendar();
quickSort(b,0,N-1);gc2=new GregorianCalendar();
jtf.setText("耗时:"+String.valueOf(gc2.getTimeInMillis()-gc1.getTimeInMillis())+"毫秒");
}});
getContentPane().setLayout(new GridLayout(5,1));
getContentPane().add(insertButton);
getContentPane().add(bubbleButton);
getContentPane().add(selectButton);
getContentPane().add(quickButton);
getContentPane().add(jtf);
setLocation(460,120);
setTitle("排序");
setVisible(true);
pack();
validate();
setDefaultCloseOperation(EXIT_ON_CLOSE);
} public void reset(int n)
{
for (int i=0;i<n;i++)
{
b[i]=a[i];
}
}
public void display(int n)
{
for (int i=0;i<n;i++)
{
System.out.print(b[i]+" ");
}
}
public static void main(String args[])
{ new Sort(); } public void insertSort(int a[], int n)
{
int j,t;
for(int i=1;i<n;i++)
{
t=a[i];
for(j=i-1;j>=0&&t<a[j];j--)
a[j+1]=a[j];
a[j+1]=t;
}
} public void bubbleSort(int a[], int n)
{
int t;
for(int i=0;i<n;i++)
{
for(int j=1;j<n-i;j++)
{ if(a[j-1]>a[j]) {t=a[j];a[j]=a[j-1];a[j-1]=t;}}
}
}
public void selectSort(int a[],int n)
{
int i,j,k,t;
for(i=0;i<n;i++)
{
k=i;
for(j=i+1;j<n;j++)
{
if(a[k]>a[j])
{
k=j;
}
}
t=a[i];a[i]=a[k];a[k]=t;
}
}
public void quickSort(int a[],int low,int high)
{
int t;
int i=low;
int j=high;
if(low<high)
{
t=a[i];
while(i!=j)
{
while(a[j]>t&&i<j) j--;
if(i<j) a[i++]=a[j];
while(a[i]<=t&&i<j) i++;
if(i<j) a[j--]=a[i];
}
a[i]=t;
quickSort(a,low,i-1);
quickSort(a,i+1,high);
}
}
}
为什么在quickSort里有时候是0?
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货