您的位置:首页 > 其它

常见排序算法 (二)-冒泡排序

2014-04-18 15:14 197 查看
标准的冒泡排序过程如下: 

首先比较 a[1]与 a[2]的值,若 a[1]大于 a[2]则交换两者的值,否则不变。 

再比较 a[2]与 a[3]的值,若 a[2]大于 a[3]则交换两者的值,否则不变。 

再比较 a[3]与 a[4],以此类推,最后比较 a[n-1]与 a
的值。 

这样处理一轮后,a
的值一定是这组数据中最大的。 

再对 a[1]~a[n-1]以相同方法处理一轮。 

共处理 n-1 轮后 a[1]、a[2]、……a
就以升序排列了。  

过程举例: 

初始元素序列: 8 3 2 5 9 3* 6 

第一趟排序: 3 2 5 8 3* 6  【9】 

第二趟排序: 2 3 5 3* 6 【8 9 】 

第三趟排序: 2 3 3* 5 【 6 8 9】 

第四趟排序: 2 3 3* 【5 6 8 9 】 

第五趟排序: 2 3 【3* 5 6 8 9 】 

第六趟排序: 2 【3 3* 5 6 8 9 】

public class Main {
public static void main(String[] args) {
int[] a = {43, 5, 6, 78, 90, 3};
BubbleSort(a);
for(int i=0; i<a.length; i++) {
System.out.println(a[i]);
}
}

public static void BubbleSort(int a[]) {
for (int i = 0; i < a.length - 1; i++) {
for (int j = 0; j < a.length - i - 1; j++) {
if (a[j] > a[j + 1]) {
int temp = a[j + 1];
a[j + 1] = a[j];
a[j] = temp;
}
}
}
}
}


 
这样,对于某段有序的序列,下一次遍历时就不用再比较了。最理想的是整个序列本就有序,如此,k = 0,只遍历一遍就完成了。 

 

冒泡排序是经典的排序算法,因其过程像冒泡而得名。 也因容易理解,很多教科书都将其收入。 然而冒泡排序的效果确是各种算法里较为糟糕的,特别是当数据量大时。 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息