Java冒泡排序与选择排序的差别

    添加时间:2013-5-20 点击量:

    前些天误把冒泡排序算作选择排序,好在博友及时斧正。今天就来说说这两者的差别。


    冒泡排序


    它反复地访问过要排序的数列,一次斗劲两个元素,若是他们的次序错误就把他们互换过来。访问数列的工作是反复地进行直到没有再须要互换,也就是说该数列已经排序完成。


    代码如下:



     1 public class nums {
    
    2 public static void main(String[] args){
    3 int []nums = {5,4,3,2,1};
    4 forint i = 0; i < nums.length; i++){
    5 forint j = 0; j < nums.length-i-1; j++){
    6 if(nums[j] > nums[j+1]){
    7 int temp = nums[j];
    8 nums[j] = nums[j+1];
    9 nums[j+1] = temp;
    10 }
    11 }
    12 forint x = 0;x < nums.length;x++){
    13 System.out.print(nums[x]+,);
    14 }
    15 System.out.print(\n);
    16 }
    17 }
    18 }


    每一轮斗劲后的输出如下:



    1 4,3,2,1,5
    2 3,2,1,4,5
    3 2,1,3,4,5
    4 1,2,3,4,5
    5 1,2,3,4,5,


    从输出中可以很清楚的熟悉打听冒泡排序的算法流程。


    选择排序


    每一趟从待排序的数据元素中选出最小(或最大)的一个元素,次序放在已排好序的数列的最后,直到全部待排序的数据元素排完。


    代码如下:



     1 public class nums {
    
    2 public static void main(String[] args){
    3 int []nums = {5,4,3,2,1};
    4 forint i = 0; i < nums.length; i++){
    5 forint j = 0; j < nums.length; j++){
    6 if(nums[i] < nums[j]){
    7 int temp = nums[i];
    8 nums[i] = nums[j];
    9 nums[j] = temp;
    10 }
    11 }
    12 forint x = 0;x < nums.length;x++){
    13 System.out.print(nums[x]+,);
    14 }
    15 System.out.print(\n);
    16 }
    17 }
    18 }


    从代码中可以看出每轮斗劲中,nums[i]和数组中的每个元素都有作斗劲。


    每一轮斗劲后的输出如下:



    1 5,4,3,2,1
    2 4,5,3,2,1
    3 3,4,5,2,1
    4 2,3,4,5,1
    5 1,2,3,4,5,


    从输出成果中还是很轻易看出它与冒泡排序在算法上的差别。



    很是感激博友 啊超~的斧正,不然我可能永远都不知道我是错的。如有错误之处还望各位不吝赐教!


    真正的心灵世界会告诉你根本看不见的东西,这东西需要你付出思想和灵魂的劳动去获取,然后它会照亮你的生命,永远照亮你的生命。——王安忆《小说家的十三堂课》
    分享到: