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

网站设计与制作说明好用的搜索引擎有哪些

网站设计与制作说明,好用的搜索引擎有哪些,wordpress 云主机名,爱用建站正规吗快速排序,顾名思义,快速排序是一种速度非常快的一种排序算法 平均时间复杂度为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/123705.html

相关文章:

  • 哪个网站财经做的最好河北网络科技有限公司
  • 学建设网站及功能360优化大师app下载
  • 网站设计服务费做什么费用优化seo方法
  • 做团购网站商品从哪里找怎么做网站模板
  • 国内优秀的设计网站2023新闻摘抄十条
  • 如何做网站认证湖南网络推广机构
  • 透明房产网seo基础培训机构
  • wordpress播放网易云360站长工具seo
  • opkg 做网站的包叫什么名字培训计划模板
  • 怎么做网站规划河南网站建站推广
  • 如何做网站源码郑州网站优化外包顾问
  • 网站代码大全可复制营销方案怎么写?
  • 网上有女的叫你建网站windows优化大师兑换码
  • 做娱乐新闻的网站有哪些优化课程体系
  • wordpress 有支付接口关键字排名优化公司
  • 做网站 内容越多越好哪些网站有友情链接
  • 北京建网站服务网站制作设计
  • 免费制作软件app的网站软文推广代表平台
  • 福州网站设计哪家靠谱简短的软文范例
  • 网站备案域名需要解析到备案服务器吗广告营销推广
  • wordpress 视频 插件谷歌seo引擎优化
  • 阿里巴巴装修网站武汉seo首页优化报价
  • 手机网站制作器2023年火爆的新闻
  • 餐厅设计优化关键词的公司
  • 如何自己弄个免费网站网络营销的优势与不足
  • 总局网站建设管理规范重庆网站优化软件
  • 做自己的网站难不难营销网站建设价格
  • wordpress手机端发布软件排名优化工具
  • 有账号和密码怎么进公司网站后台百度问答平台
  • 南昌网站建设培训网页宣传