zoukankan      html  css  js  c++  java
  • 冒泡排序,快速排序、选择排序及二分法查找思想回顾

    回顾冒泡排序、快速排序,直接选择排序以及递归思想。快速排序和二分查找都融入了分而治之的思想,一分再分,递归之。

    1、冒泡排序

    相邻元素之间逐对两两比较,若不符合预期则先交换位置再继续比较,如此,每次比较都能把最大或最小的元素放在预期位置,直到完成排序。

    2、快速排序

    1、准备工作:先选定一个参考值,设置两个指针(设为i,j,分别指向数字序列的头和尾)。

    2、同时从数字序列的两头进行扫描对比,将大于参考值的数字都放于参考值的一侧,小于参考值的数字置于另一侧。直到i,j指向同一个位置,这个位置即为参考值的预期位置,设为m。

    3、对大于参考值一侧,令i=m+1,对小于参考值的一侧,令j=m-1。再分别对参考值的两侧重复步骤1、2。

    4、重复步骤1、2、3,直到i>j。

    public static int getMiddle(int[] array, int i, int j)
    {
      int key = array[i];
      while(i<j)
      {
      //从前向后扫描
        while (i<j && array[j]>key)
         {
          j--;
         }
      array[i] = array[j];
      //从后向前扫描
        while (i<j && array[i]<key)
        {
          i++;
        }
      array[j] = array[i];
      }

      array[j] = key;
      return j;
    }
    //递归的思想,反复划分,直到只剩一个元素。
    public static void qSort(int[] array, int i, int j)
    {
      if(i<j)
      {
        int middle = getMiddle(array, i, j);
        qSort(array, i, middle-1);
        qSort(array, middle+1, j);
      }

    }

    3.选择排序

    就像打擂台,把元素一个一个往擂台上摆,优胜劣汰,从而确定第一名,第二名,第三名。。。直到排序完成。

    4、二分查找算法

    要求,序列是有序的,思想与快速排序类似,也运用了分而治之。

    记得应用递归时,return,否则会一直执行到return -1,结束,导致输出始终为-1.

  • 相关阅读:
    du 命令计算隐藏文件夹或文件
    QEMU中VIRTIO实现
    virtio_blk
    网络虚拟化Virtio-net
    virtio desc
    vhost dpdk 共享内存
    gvisor 信号处理
    Java idea 执行单个测试方法
    Java idea 创建User.xml,需要新增一个mybatis-mapper.xml模板
    Java idea 创建log4j.properties
  • 原文地址:https://www.cnblogs.com/qcxdoit/p/6115165.html
Copyright © 2011-2022 走看看