当前位置: 首页 > news >正文

网站设计与制作说明互联网营销推广渠道

网站设计与制作说明,互联网营销推广渠道,百度网站怎么做视频播放器,动漫谷网站建设策划书快速排序,顾名思义,快速排序是一种速度非常快的一种排序算法 平均时间复杂度为O(),最坏时间复杂度为O()数据量较大时,优势非常明显属于不稳定排序 1.算法描述 每一轮排序选择一个基准点(pivot)进行分区 让小于基准点…

        快速排序,顾名思义,快速排序是一种速度非常快的一种排序算法

  • 平均时间复杂度为O(nlog_{2}n),最坏时间复杂度为O(n^{^{2}})
  • 数据量较大时,优势非常明显
  • 属于不稳定排序

1.算法描述

  1. 每一轮排序选择一个基准点(pivot)进行分区

    1. 让小于基准点的元素的进入一个分区,大于基准点的元素的进入另一个分区

    2. 当分区完成时,基准点元素的位置就是其最终位置

  2. 在子分区内重复以上过程,直至子分区元素个数少于等于 1,这体现的是分而治之的思想 (divide-and-conquer)

  3. 从以上描述可以看出,一个关键在于分区算法,常见的有洛穆托分区方案、双边循环分区方案、霍尔分区方案

2.单边循环快排(lomuto 洛穆托分区方案)

  1. 选择最右元素作为基准点元素

  2. j 指针负责找到比基准点小的元素,一旦找到则与 i 进行交换

  3. i 指针维护小于基准点元素的边界,也是每次交换的目标索引

  4. 最后基准点与 i 交换,i 即为分区位置

代码实现

    public static void main(String[] args) {int[] a = {5, 3, 7, 2, 9, 8, 1, 4};System.out.println(Arrays.toString(a));quick(a, 0, a.length - 1);}public static void quick(int[] a, int l, int h) {if (l >= h) {return;}int p = partition(a, l, h); // p 索引值quick(a, l, p - 1); // 左边分区的范围确定quick(a, p + 1, h); // 左边分区的范围确定}private static int partition(int[] a, int l, int h) {int pv = a[h]; // 基准点元素int i = l;for (int j = l; j < h; j++) {if (a[j] < pv) {if (i != j) {swap(a, i, j);}i++;}}if (i != h) {swap(a, h, i);}System.out.println(Arrays.toString(a) + " i=" + i);// 返回值代表了基准点元素所在的正确索引,用它确定下一轮分区的边界return i;}

3.双边循环快排(不完全等价于 hoare 霍尔分区方案)

  1. 选择最左元素作为基准点元素

  2. j 指针负责从右向左找比基准点小的元素,i 指针负责从左向右找比基准点大的元素,一旦找到二者交换,直至 i,j 相交

  3. 最后基准点与 i(此时 i 与 j 相等)交换,i 即为分区位置

要点

  1. 基准点在左边,并且要先 j 后 i

  2. while( i < j && a[j] > pv ) j--

  3. while ( i < j && a[i] <= pv ) i++

代码实现

    public static void main(String[] args) {int[] a = {5, 3, 7, 2, 9, 8, 1, 4};System.out.println(Arrays.toString(a));quick(a, 0, a.length - 1);}private static void quick(int[] a, int l, int h) {if (l >= h) {return;}int p = partition(a, l, h);quick(a, l, p - 1);quick(a, p + 1, h);}private static int partition(int[] a, int l, int h) {int pv = a[l];int i = l;int j = h;while (i < j) {// j 从右找小的while (i < j && a[j] > pv) {j--;}// i 从左找大的while (i < j && a[i] <= pv) {i++;}swap(a, i, j);}swap(a, l, j);System.out.println(Arrays.toString(a) + " j=" + j);return j;}

http://www.wangmingla.cn/news/156721.html

相关文章:

  • 宝塔wordpress建站教程360收录批量查询
  • 网页网站设计公司排行榜免费域名注册网站
  • 西安免费网站制作如何推广一个产品
  • 如何建立属于自己的网站搜索平台
  • 一元夺宝网站制作视频百度推广技巧
  • 有开源项目做的网站站长工具排行榜
  • dw asp access 网站开发优点360优化大师app
  • 建立品牌网站的seo网络排名优化哪家好
  • wordpress wptitle广州seo诊断
  • labview 做网站百度数据中心
  • 如何做b2b网站推广安卓排名优化
  • 中国新闻社是国企还是央企成都seo经理
  • 做影片的网站描述谷歌网站网址
  • 网站建设背景介绍网站收录免费咨询
  • 江门市网站开发适合小学生的最新新闻
  • 安徽网站优化多少钱长春网站建设
  • 中国建设银行网站分期通宁德市医院
  • 建站需要钱网络运营推广具体做什么工作
  • 凤凰网站建设公司整站优化案例
  • 能搜索附近人的软件百度seo排名教程
  • 哪里有网站开发设计百度热搜电视剧
  • 免费论坛网站建设百度竞价推广托管
  • 企业建站网站认证免费网站seo优化
  • wordpress网站 添加微信精准引流客源的方法可靠吗
  • 做的好看的旅游网站seo快速排名的方法
  • 网站读取错误时怎样做百度站长app
  • dede调用其他网站数据库百度站长工具使用方法
  • linux空间做网站营销网站建设制作
  • 装修企业网站源码网址收录入口
  • 做网站用别人图片文章会侵权吗seo技术培训唐山