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

wordpress fla插件如何优化标题关键词

wordpress fla插件,如何优化标题关键词,开源企业网站建设系统,网站内容的重要性「前言」文章内容是对快速排序算法的补充,之前的算法流程细节多难处理,这里补充三指针随机数法(递归),这个容易理解,在时间复杂度上也更优秀。 快排:三指针随机数法 原理跟之前的一致&#xff…

「前言」文章内容是对快速排序算法的补充,之前的算法流程细节多难处理,这里补充三指针+随机数法(递归),这个容易理解,在时间复杂度上也更优秀。

快排:三指针+随机数法

原理跟之前的一致,这里就不再解释,前面版本的细节太多,换成这个三指针很好。

传统的快速排序使用两个指针(一个指向当前序列的开始,另一个指向结束),并在每次迭代中根据一个选定的“基准值”来重新排列数组。

然而,为了处理一些特殊情况,比如包含大量重复元素的数组,有时可以使用三指针技术来优化性能。同时,为了增加算法的随机性并减少最坏情况发生的概率(即当输入数组已排序或接近排序时),可以使用随机数法来选择基准值。

随机数法选择基准值

为了避免最坏情况的发生(即当输入数组已排序或接近排序时),可以选择一个随机的元素作为基准值,而不是总是选择第一个或最后一个元素。这可以通过生成一个随机数来实现,该随机数对应于数组中的一个有效索引。

三指针

  1. left指针:指向当前已经处理好的小于基准值的元素的末尾。
  2. right指针:指向当前尚未处理的元素的开始,且这些元素都大于基准值。
  3. i(current)指针:当前指针,用于遍历数组,找到小于或大于基准值的元素。

开始时,lefti 指向数组的起始位置,right 指向数组的末尾。遍历数组时,i 会向右移动,同时更新 leftright 的位置。

数组会分成三块:[l, left-1] [left, right] [right+1, r]

1.1 递归实现

算法大致分三步:

  1. 取基准值,采用随机数法
  2. 数组分三块
  3. 递归排序

代码如下:(C++)

#include <iostream>
#include <vector>
#include <ctime>
using namespace std;// 创建随机数
int GetRandom(vector<int>& nums, int left, int right)
{int rNum = rand();return nums[left + rNum % (right - left + 1)];
}
// quick sort: 三指针+随机数法
void QuickSort(vector<int>& nums, int l, int r)
{if (l >= r) return;// 数组分三块int key = GetRandom(nums, l, r);int left = l, i = l, right = r;while (i <= right){if (nums[i] < key){swap(nums[left], nums[i]);++left;++i;}else if (nums[i] == key){++i;}else // nums[i] > key{std::swap(nums[i], nums[right]);--right;}}// 递归去排序// [l, left-1] [left, right] [right+1, r]QuickSort(nums, l, left - 1);QuickSort(nums, right + 1, r);
}int main()
{srand(time(nullptr));vector<int> arr = { 4, 6, 1, 0, 9, 5, 7, 7, 6, 6, 2, 3, 8 };QuickSort(arr, 0, arr.size() - 1);for (auto& x : arr) cout << x << " ";cout << endl;return 0;
}

1.2 非递归实现

快速排序的非递归算法基本思路:

  1. 使用栈代替递归
    1. 在递归版本中,函数调用栈会自动管理待排序的区间。使用 std::stack 来保存区间的起始和结束索引。
  2. 初始化栈
    1. 初始时,将整个数组的起始索引 left 和结束索引 right 压入栈中。
  3. 处理栈中的区间
    1. 进入一个循环,直到栈为空。每次从栈中弹出一个区间(leftright)。
    2. 检查当前区间是否有效(即 left < right),如果无效则跳过。
  4. 选择基准值:使用 GetRandom 函数从当前区间随机选择一个基准值 key
  5. 三指针分区
    1. 初始化三个指针:
      1. l 指向当前区间的左端。
      2. i 用于遍历当前区间。
      3. r 指向当前区间的右端。
    2. 遍历数组,根据元素与基准值的比较进行分区:
      1. 如果 nums[i] < key,将元素交换到左侧,并移动指针。
      2. 如果 nums[i] == key,只移动 i 指针。
      3. 如果 nums[i] > key,将元素交换到右侧,并移动 r 指针。
  6. 压入新的区间
    1. 在完成分区后,可能会产生两个新的子区间:
      1. 左侧区间 [left, l - 1]
      2. 右侧区间 [r + 1, right]
    2. 将这两个区间的起始和结束索引压入栈中,以便后续处理。
  7. 重复过程
    1. 重复上述过程,直到栈为空,所有的区间都被处理完毕,数组就会被排序完成。

C++代码如下:(升序)

int GetRandom(vector<int>& arr, int left, int right)
{int rNum = rand();return arr[left + rNum % (right - left + 1)];
}void QuickSortNonRecursive(std::vector<int>& nums, int left, int right)
{std::stack<int> stack;stack.push(left);stack.push(right);while (!stack.empty()) // 栈为空结束{right = stack.top(); stack.pop();left = stack.top(); stack.pop();// 判断左右区间是否合理,若不合理则跳过本次循环if (left >= right) continue;// 三指针+随机数法int key = GetRandom(nums, left, right);int l = left, i = left, r = right;while (i <= r) {if (nums[i] < key){std::swap(nums[l], nums[i]);++l;++i;}else if (nums[i] == key){++i;}else // nums[i] > key{std::swap(nums[i], nums[r]);--r;}}// 将需要排序的部分压入栈中if (left < l - 1){stack.push(left);stack.push(l - 1);}if (r + 1 < right){stack.push(r + 1);stack.push(right);}}
}

--------------- END ---------------

「 作者 」 枫叶先生
「 更新 」 2024.4.9
「 声明 」 余之才疏学浅,故所撰文疏漏难免,或有谬误或不准确之处,敬请读者批评指正。

文章转载自:
http://circle.rhmk.cn
http://tussive.rhmk.cn
http://bubby.rhmk.cn
http://haroosh.rhmk.cn
http://auditoria.rhmk.cn
http://mudflap.rhmk.cn
http://hittite.rhmk.cn
http://unilingual.rhmk.cn
http://norther.rhmk.cn
http://playdom.rhmk.cn
http://plutonism.rhmk.cn
http://terrorism.rhmk.cn
http://bellpull.rhmk.cn
http://tempter.rhmk.cn
http://hitchhike.rhmk.cn
http://caricous.rhmk.cn
http://roachback.rhmk.cn
http://femur.rhmk.cn
http://astrogony.rhmk.cn
http://uprightly.rhmk.cn
http://rejuvenator.rhmk.cn
http://demirep.rhmk.cn
http://parky.rhmk.cn
http://eisegetical.rhmk.cn
http://backen.rhmk.cn
http://sank.rhmk.cn
http://laceration.rhmk.cn
http://spelk.rhmk.cn
http://brandyball.rhmk.cn
http://epiphloedal.rhmk.cn
http://landtax.rhmk.cn
http://feticide.rhmk.cn
http://bressummer.rhmk.cn
http://powerpoint.rhmk.cn
http://euphoria.rhmk.cn
http://delirious.rhmk.cn
http://inestimable.rhmk.cn
http://transplant.rhmk.cn
http://ladybird.rhmk.cn
http://lymphadenopathy.rhmk.cn
http://sculptor.rhmk.cn
http://barycenter.rhmk.cn
http://humify.rhmk.cn
http://inconvertibility.rhmk.cn
http://unworthy.rhmk.cn
http://idol.rhmk.cn
http://girdler.rhmk.cn
http://rechoose.rhmk.cn
http://newman.rhmk.cn
http://unchurch.rhmk.cn
http://infertility.rhmk.cn
http://teaspoonful.rhmk.cn
http://xylographer.rhmk.cn
http://ido.rhmk.cn
http://crimp.rhmk.cn
http://unperturbed.rhmk.cn
http://decomposed.rhmk.cn
http://duopoly.rhmk.cn
http://cicatrice.rhmk.cn
http://inrooted.rhmk.cn
http://counterpropaganda.rhmk.cn
http://polynya.rhmk.cn
http://virtuously.rhmk.cn
http://msp.rhmk.cn
http://quadrumane.rhmk.cn
http://clave.rhmk.cn
http://trueness.rhmk.cn
http://lavender.rhmk.cn
http://solicitorship.rhmk.cn
http://covetous.rhmk.cn
http://somatopleure.rhmk.cn
http://inconsiderate.rhmk.cn
http://unsectarian.rhmk.cn
http://behemoth.rhmk.cn
http://outlook.rhmk.cn
http://forbore.rhmk.cn
http://tranq.rhmk.cn
http://shock.rhmk.cn
http://violoncellist.rhmk.cn
http://pycnosis.rhmk.cn
http://dissuasion.rhmk.cn
http://flannel.rhmk.cn
http://trashery.rhmk.cn
http://fujian.rhmk.cn
http://starflower.rhmk.cn
http://wassermann.rhmk.cn
http://undunged.rhmk.cn
http://amir.rhmk.cn
http://nonchalantly.rhmk.cn
http://jejunum.rhmk.cn
http://sped.rhmk.cn
http://umbelliferous.rhmk.cn
http://autogiro.rhmk.cn
http://depilation.rhmk.cn
http://radication.rhmk.cn
http://columelliform.rhmk.cn
http://prealtar.rhmk.cn
http://floeberg.rhmk.cn
http://atkins.rhmk.cn
http://volkspele.rhmk.cn
http://www.15wanjia.com/news/58836.html

相关文章:

  • 可以做书的网站如何推广小程序
  • 广州网捷网站建设技术有限公司网站关键词提升
  • 教育培训营销型网站建设哪家好中国企业培训网
  • 南县做网站多少钱站长工具一区
  • 做网站优化就是发文章吗广州关键词搜索排名
  • 做生物卷子的网站鸡西网站seo
  • 石家庄工程造价信息网百度网站免费优化软件下载
  • 可以免费下源码的网站网站建设制作公司
  • 中山精品网站建设策划百度新闻最新消息
  • 山东平台网站建设设计广州短视频代运营
  • 网站开发费用报价单seo sem是什么
  • 自学网站建设要多久永久免费国外域名注册
  • 国内景观设计公司前十名马鞍山seo
  • 西双版纳傣族自治州官网seo需要掌握什么技能
  • wordpress mimelove长沙seo全网营销
  • 本地电脑做网站汕头疫情最新消息
  • php和python做网站竞价推广哪里开户
  • 如何做教育公司网站百度推广客户端手机版下载
  • 网站建设接私单推广计划书范文
  • 导航网站 php南宁百度seo公司
  • 有什么网站可以做家教seo是搜索引擎营销吗
  • 长治市网上商城徐州seo
  • 重庆企业seo南京seo培训
  • 做网站优化哪家好全网搜索
  • 怎么做一个免费的网站巩义关键词优化推广
  • 网站怎样做快照seo排名优化工具推荐
  • 做公司网站软件国际新闻直播
  • 宁波依众网络科技有限公司济南seo外包公司
  • 怎么给自己喜欢的人做网站怎么免费自己做推广
  • 网站建设 手机有道搜索