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

来源:互联网 发布:访客网络设置 编辑:程序博客网 时间:2024/05/29 03:48
标准的冒泡排序过程如下: 
首先比较 a[1]与 a[2]的值,若 a[1]大于 a[2]则交换两者的值,否则不变。 
再比较 a[2]与 a[3]的值,若 a[2]大于 a[3]则交换两者的值,否则不变。 
再比较 a[3]与 a[4],以此类推,最后比较 a[n-1]与 a[n]的值。 
这样处理一轮后,a[n]的值一定是这组数据中最大的。 
再对 a[1]~a[n-1]以相同方法处理一轮。 
共处理 n-1 轮后 a[1]、a[2]、……a[n]就以升序排列了。  
过程举例: 
初始元素序列: 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,只遍历一遍就完成了。 
 
冒泡排序是经典的排序算法,因其过程像冒泡而得名。 也因容易理解,很多教科书都将其收入。 然而冒泡排序的效果确是各种算法里较为糟糕的,特别是当数据量大时。 


0 0
原创粉丝点击