请问:什么是冒泡法?常用的Java数据结构算法还有什么啊?谢谢!
解决方案 »
- Console console = System.console(); 能在Eclipse里面用嘛?
- 小弟java新手。现在被一个小问题困扰。希望诸位前辈指教一下
- (满分)大家帮帮我啊!!!!Java 生成.exe文件问题
- 请教这段代码是什么意思啊?
- 关于Java的150多个类及接口帮助
- 转贴:各位高人,谁知道怎样将Java代码编译成本地的二进制代码
- 如何在这个File类对象对应的文件尾部追加而不会覆盖以前的内容???
- 就近算法,高手指教
- java 开发corba遇到的问题,十万火急!!!!!!!!!!
- 【急求求帮助】整合Spring+Hibernate的时候出现Unrooted Tests求好人帮忙解决下!谢谢了!
- 如何让两个jtextpane(左右挨着,它们中间没有空隙),同时随滚动条换行(只有竖直滚动条)
- java程序如何读取远程机器上的文件内容内容?
比如对long型数组a排序。
class ArrayBub{
private long[] a;
private int nElems;
public ArrayBub(int max){
a=new long[max];
nElems=0;
} public void insert(long value){
a[nElems]=value;
nElems++;
} public void display(){
for(int j=0;j<nElems;j++){
System.out.print(a[j]+" ");
System.out.println("");
}
}
//冒泡
public void bubbleSort(){
int out,in;
for(out=nElems-1;out>1;out--)
for(in=0;in<out;in++)
if(a[in]>a[in+1])
swap(in,in+1);
}
private void swap(int one,int two){
long temp=a[one];
a[one]=a[two];
a[two]=temp;
} public static void main(String[] args){
int maxSize=100;
ArrayBub arr;
arr=new ArrayBub(maxSize);
arr.insert(77);
arr.insert(99);
arr.insert(43);
arr.insert(55);
arr.insert(22);
arr.insert(88);
arr.insert(11);
arr.insert(00);
arr.insert(66);
arr.insert(33);
arr.display();
System.out.println("----------");
arr.bubbleSort();
arr.display();
}}
首先 8 和 5 比较, 因为 8 > 5 所以将它们的位置互换,于是就成这样:5 8 9 2 1
然后 8 和 9 比较, 因为 8 < 9 ,所以它们的位置不必变动。
再然后 9 和 2 比较,因为 9 > 2 ,所以将它们的位置互换,于是就成这样:5 8 2 9 1
现经过一次比较,就成了这样: 5 8 2 1 9重复上面的操作,就成了这样: 5 2 1 8 9
再重复一次:2 1 5 8 9
最后一次: 1 2 5 8 9
你看,这不就排成功了吗?总结:将一组数据两两比较,如果前一个比后一个大,就交换它们位置。经过 n-1 次循环后,就得出一个有序的数组。(当然有好的情况,也不用n-1次)
/**
*气泡排序算法
*/
class BubbleSortAlgorithm extends SortAlgorithm {
void sort(int a[]) throws Exception {
for (int i = a.length; --i>=0; ) {
boolean swapped = false;
for (int j = 0; j<i; j++) {
if (stopRequested) {
return;
}
if (a[j] > a[j+1]) {
int T = a[j];
a[j] = a[j+1];
a[j+1] = T;
swapped = true;
}
pause(i,j);
}
if (!swapped)
return;
}
}
}