冒泡排序是我们最先接触的排序方法,我简单说下原理:
设待排序元素的个数为n,首先反向比较第n-2个元素和第n-1个元素(第n-1个元素就是最后一个元素,即元素的索引),如果逆序(前一个比后一个大),则将这两个元素交换,反之则不交换;
然后比较第n-3个元素和第n-2个元素,做同样比较处理;
重复此过程直到处理完第0个元素和第一个元素(全部比较完)。
此过程称之为一趟,这一趟的结果是将所有元素中最小的元素找出来排到了第一个位置。
然后就是下一趟比较了,前一趟确定的最小的元素就不再参加这下一趟的比较了,而此趟排序又把剩下的元素中最小的元素找出来了放在此趟元素的最前面
。。。。。。
设待排序元素的个数为n,首先反向比较第n-2个元素和第n-1个元素(第n-1个元素就是最后一个元素,即元素的索引),如果逆序(前一个比后一个大),则将这两个元素交换,反之则不交换;
然后比较第n-3个元素和第n-2个元素,做同样比较处理;
重复此过程直到处理完第0个元素和第一个元素(全部比较完)。
此过程称之为一趟,这一趟的结果是将所有元素中最小的元素找出来排到了第一个位置。
然后就是下一趟比较了,前一趟确定的最小的元素就不再参加这下一趟的比较了,而此趟排序又把剩下的元素中最小的元素找出来了放在此趟元素的最前面
。。。。。。
这样做n-1趟(也就是为什么要n-1次循环)之后,就把所有元素从小到大排好序了。
下面是JAVA代码:
package exam1;
import java.util.*;
public class Example2 {
public static void main(String[] args) {
// TODO 自动生成的方法存根
int []b={12,23,9,23,6,45,90,123,19,34};
int i,j;
//首先是n-1次趟排序
for(i=1;i
=i;j--){
//如果前一个元素比后一个元素大则将俩元素进行交换
if(b[j-1]>b[j]){
int t;
t=b[j-1];b[j-1]=b[j];b[j]=t;
}
}
}
System.out.println(Arrays.toString(b));
}
}