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

在线crm视频在线crm全国seo公司排名

在线crm视频在线crm,全国seo公司排名,移动网站建设公司,做系统下载网站建设快速排序是一种高效的排序算法,由C. A. R. Hoare在1960年提出,基本思想是分治法(Divide and Conquer)策略,通过递归将一个大问题分解为若干个较小的子问题,然后合并这些子问题的解来解决原始问题 快速排序…

快速排序是一种高效的排序算法,由C. A. R. Hoare在1960年提出,基本思想是分治法(Divide and Conquer)策略,通过递归将一个大问题分解为若干个较小的子问题,然后合并这些子问题的解来解决原始问题

快速排序的基本步骤如下

(1) 选择基准元素(Pivot): 从数组中选择一个元素作为基准元素(pivot)

通常有三种选择方法:

1. 选择第一个元素作为基准

2. 选择最后一个元素作为基准

3.选择中间位置的元素作为基准

(2)分区(Partitioning)操作: 重新排列数组,所有比基准元素小的元素摆放在基准前面,所有比基准元素大的元素摆在基准的后面,这个分区操作后,基准元素处于数组的中间位置

分区操作: 使用两个指针(通常称为i和j),从数组的两端开始,向中间移动, 当i指针找到比基准大的元素,j指针找到比基准小的元素时,交换这两个元素, 重复上述过程,直到两个指针相遇

#include <iostream>
using namespace std;
void Quicksort(int array[], int L, int R)
{
    if (L >= R) // 如果左边索引 L 大于等于右边索引 R,则说明子数组的大小为 1 或更小,不需要进一步排序。此时,函数直接返回,结束当前递归
        return;
    int left = L, right = R;
    int pivot = array[left];
    while (left < right)
    {
        while (left < right && array[right] >= pivot)
        {
            right--;
        }
        if (left < right)
        {
            array[left] = array[right];
            left++;
        }
        while (left < right && array[left] <= pivot)
        {
            left++;
        }
        if (left < right)
        {
            array[right] = array[left];
            right--;
        }
    }
    array[left] = pivot;
    Quicksort(array, L, left - 1);
    Quicksort(array, left + 1, R);
}

int main()
{
    int array[] = {6, 4, 8, 2, 1, 0};
    int n = sizeof(array) / sizeof(array[0]);  
    cout << "Original array: ";
    for (int i = 0; i < n; i++)  
        cout << array[i] << " ";
    cout << endl;
    Quicksort(array, 0, n - 1);  
    cout << "Sorted array:   ";
    for (int i = 0; i < n; i++)  
        cout << array[i] << " ";
    cout << endl;
    return 0;
}

参数说明:

array[]:待排序的整数数组

L:当前子数组的左边界索引 

R:当前子数组的右边界索引

函数逻辑:

递归终止条件:如果 L >= R,说明子数组的大小为 1 或更小,不需要排序,直接返回

初始化:将 left 和 right 分别初始化为 L 和 R,选择 array[left] 作为基准元素 pivot

分区操作:

从右向左扫描,找到第一个小于 pivot 的元素,将其放到 left 位置,并将 left 指针右移一位

从左向右扫描,找到第一个大于 pivot 的元素,将其放到 right 位置,并将 right 指针左移一位

重复上述两个步骤,直到 left 和 right 指针相遇

放置基准元素:将基准元素 pivot 放到 left 位置

递归排序:分别对基准元素左边和右边的子数组进行递归排序

http://www.hkea.cn/news/758599/

相关文章:

  • 装修网站合作平台有哪些torrentkitty磁力猫
  • 大理网站开发长春seo结算
  • 西双版纳疫情最新情况seo营销的概念
  • 网站推广seo蜘蛛屯优化排名模板建网站价格
  • 怎样建设公司网站小程序b2b网站大全免费
  • 百度抓取不到网站百度识图搜索图片来源
  • 企业网站栏目规划的重要性网络营销的概述
  • 公司网站建设找谁做免费发布推广信息网站
  • 虚拟币网站开发seo百度关键字优化
  • 网站建设都 包括哪些淄博网站制作
  • 自己做装修网站南宁百度推广seo
  • 品牌建设浅谈seo网络营销外包
  • 昆山网站建设兼职千锋教育的官网
  • cm域名做网站盘古百晋广告营销是干嘛
  • 网站栏目策划企业网络营销方案
  • 网站自动采集指标sem广告投放是做什么的
  • 想做一个个人网站怎么做培训学校
  • 网站开发ipv6升级如何创建自己的小程序
  • 做网站需要备案吗外贸网站推广与优化
  • 独立网站建设流程b站视频推广网站动漫
  • 泰安诚信的网站建设b站推广入口2023年
  • 高校网站建设资料库东莞seo推广公司
  • 电子印章手机在线制作软件四川seo整站优化费用
  • 个人风采网站制作外贸网站平台哪个好
  • 沈阳企业建站谷歌推广和seo
  • .la域名做的网站如何快速推广app
  • 广州优化网站建设怎么用手机制作网站
  • 做微网站的第三方学网络营销
  • 湖南做网站的公司有哪些搜索引擎是什么
  • flash网站管理系统seo优化排名易下拉用法