• java基础之冒泡排序和选择排序


    无语,第一次在博客园发表文章,最后只显示标题,却没有内容,火大,这次在随笔写下看看

    先看代码

    冒泡排序

     1 package PaiXu;
     2 public class MaoPao
     3 {
     4     public static void main(String args[])
     5     {
     6        int MaoPaoArray[] = {8,12,32,2,45,21,65,10,49};
     7         int temp;
     8         for(int i=0;i<MaoPaoArray.length;i++)
     9         {
    10             for(int j=i;j<MaoPaoArray.length;j++)     
    11               if(MaoPaoArray[j]<MaoPaoArray[i])
    12               {
    13                  temp = MaoPaoArray[i];
    14                  MaoPaoArray[i] = MaoPaoArray[j];
    15                  MaoPaoArray[j] = temp;
    16               }
    17         }
    18         for(int i=0;i<MaoPaoArray.length;i++)System.out.print(MaoPaoArray[i]+" ");
    19     }    
    20 }

    选择排序

     1 package PaiXu;
     2 public class XuanZe
     3 {
     4    public static void main(String args[])
     5    {
     6        int XuanZeArray[] = {8,12,32,2,45,21,65,10,49};
     7        int m,index,temp;
     8        for(int i=0;i<XuanZeArray.length;i++)
     9        {
    10            index=i;
    11            m=XuanZeArray[i];
    12            for(int j=i;j<XuanZeArray.length;j++)     
    13              if(XuanZeArray[j]<m)
    14              {
    15                  index = j;
    16                  m = XuanZeArray[j];
    17              }
    18            temp=XuanZeArray[i];
    19            XuanZeArray[i]=XuanZeArray[index];
    20            XuanZeArray[index]=temp;
    21        }
    22        for(int i=0;i<XuanZeArray.length;i++)System.out.print(XuanZeArray[i]+" ");
    23    }
    24 }

    代码很简短就不解释了

    冒泡排序的步骤: tag:将第i个元素和后面的每个元素逐个比较,如果遇到比Ai小的就交换

    1.①比较第一个元素A1和第二个元素A2,如果A2<A1就交换A1和A2的位置

       ②比较第一个元素A1和第三个元素A3,如果A3<A1就交换A1和A3的位置

       ③比较第一个元素A1和第四个元素A4,如果A4<A1就交换A1和A4的位置

    ...

    2.①比较第二个元素A2和第三个元素A3,如果A3<A2就交换A2和A3的位置

       ②比较第二个元素A2和第四个元素A4,如果A4<A2就交换A2和A4的位置

       ③比较第二个元素A2和第五个元素A5,如果A5<A2就交换A2和A5的位置

    ...

    3.①比较第三个元素A3和第四个元素A4,如果A4<A3就交换A3和A4的位置

       ②比较第四个元素A3和第五个元素A5,如果A5<A3就交换A3和A5的位置

       ③比较第五个元素A3和第六个元素A6,如果A6<A3就交换A3和A6的位置

    ...

    ...

    选择排序法步骤   tag:先找出第i个元素Ai后面的所有元素中最小的那个元素Am,然后比较Am和Ai,如果Am小就交换

    1.找出除去第一个元素A1之外的最小的元素Ax,比较Ax和A1,如果Ax小就交换

    2.找出除去第一个第二个元素A1、A2之外的最小的元素Ay,比较Ay和A2,如果Ay小就交换

    3.找出除去第一个第二个第三个元素A1、A2、A3之外的最小的元素Az,比较Az和A3,如果Az小就交换

    ...

    其实冒泡排序和选择排序的循环次数是一样的,但是通常情况下选择排序法要比冒泡排序法快,这是为什么呢

    答案是这样的:选择排序法的数据交换次数要比冒泡排序法少

    我来按照最糟糕的情况(完全倒序)算一下

    冒泡排序

    1.n-1次交换

    2.n-2次交换

    3.n-3次交换

    ...

    总共是 n(n-1)/2 次交换

    选择排序

    1.1次交换

    2.1次交换

    3.1次交换

    ...

    总共是 n 次交换

    应该很明显了吧

    也许有一些喜欢思考的同学会想:但是选择排序法为了找第i个元素Ai后面的所有元素中最小的那个元素Am也会消耗

    没错,但是这里只是给index和m赋值,并没有发生数据交换,消耗可以忽略

    以上仅为我个人观点,如果你有你的想法,请一定提出来,谢谢

  • 相关阅读:
    第二阶段冲刺10
    第二阶段冲刺9
    第二阶段冲刺8
    (转载)关于数组的几个面试题
    关于静态变量
    linux进程地址空间详解(转载)
    单例模式,多种实现方式JAVA
    最佳线程数
    python学习
    svn设置
  • 原文地址:https://www.cnblogs.com/datougui/p/Java_PaiXu.html
Copyright © 2020-2023  润新知