上学的时候学的知识,刚一毕业又还给了老师,这段时间失业,所以决定把数据结构重新学习下。
起泡排序,很简单,就是需要排序的队列里,一个个“冒”出来,然后给它们换位置;
第一步,建立一个排序的接口类Sorter,在Sorter中有个方法sort实现排序;
package com.project;
public interface Sorter {
public void sort(Sequence s);
}
第二步,实现这个接口,类Sort_Bubblesort,在Sort_Bubblesort具体实现sort;
package com.project;
public class Sort_Bubblesort implements Sorter {
//一个比较的方法
private Comparator c;
public Sort_Bubblesort()
{
c = new Comparator();
}
public Sort_Bubblesort(Comparator comparator)
{
c=comparator;
}
public void sort(Sequence s)
{
int n=s.getSize();
for(int i=0;i<n;i++)
for(int j=0;j<n-i-1;j++)
{ //可以对此出进行调整,从而对升(降)排序
if(c.compare(s.getAtRank(j),s.getAtRank(j+1))>0)
{
int temp=s.getAtRank(j);
s.replaceAtRank(j,s.getAtRank(j+1));
s.replaceAtRank(j+1,temp);
}
}
}
}
其它,在类Bubblesort使用的两个方法类,Comparator和Sequence的具体代码如下:
Comparator.java
package com.project;
public class Comparator {
public Comparator()
{
}
public int compare(int valueA,int valueB)
{
if(valueA>valueB)
return 1;
else
return 0;
}
}
Sequence.java
package com.project;
public class Sequence {
private int[] args;
public Sequence()
{
}
public Sequence(int[] putArg)
{
args=putArg;
}
public int getSize()
{
if(args!=null)
return args.length;
else
return -1;
}
public int getAtRank(int position)
{
if(position<getSize())
return args[position];
else
return -1;
}
public void replaceAtRank(int rePosition,int value)
{
args[rePosition]=value;
}
public void outputSystem()
{
for(int i=0;i<getSize();i++)
System.out.println(args[i]);
}
}
抄书上的一句话,利用起泡排序酸法对长度为n的序列进行排序,至多经过n轮扫描交换,所有元素都将就位,既实现完全有序。