冒泡排序
原理
- 比较相邻的两个元素。如果第一个比第二个大则交换他们的位置(升序排列,降序则反过来)。
- 从列表的开始一直到结尾,依次对每一对相邻元素都进行比较。这样,值最大的元素就通过交换“冒泡”到了列表的结尾,完成第一轮“冒泡”。
- 重复上一步,继续从列表开头依次对相邻元素进行比较。已经“冒泡”出来的元素不用比较(一直比较到结尾也可以,已经“冒泡”到后面的元素即使比较也不需要交换,不比较可以减少步骤)。
- 继续从列表开始进行比较,每轮比较会有一个元素“冒泡”成功。每轮需要比较的元素个数会递减,一直到只剩一个元素没有“冒泡”时(没有任何一对元素需要比较),则列表排序完成。
public class 冒泡排序 {
//冒泡排序
public static void main(String[] args) {
long s1=System.currentTimeMillis();
double[] arr = {12.9,53.54,75.0,99.1,3.14};
for(int k=1;k<arr.length;k++) {
for(int i=0;i<arr.length-k;i++) {
if(arr[i]>arr[i+1]) {
double tmp=arr[i];
arr[i]=arr[i+1];
arr[i+1]=tmp;
}
}
}
long e1=System.currentTimeMillis();
System.out.println("排序用时"+(e1-s1)+"ms");
for(double tmp:arr) {
System.out.print(tmp+"\t");
}
}
}