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

西安网站建设咪豆wordpress奖励插件

西安网站建设咪豆,wordpress奖励插件,大连设计工作室,网站建设销售好快速排序基本原理1.快速排序1.1 基本原理1.2 快速排序执行步骤1.2.1 分区包含步骤1.2.1 分区步骤1.3 快速排序大O记法表示2. 将[0,5,2,1,6,3]进行快速排序 【实战】2.1 第一次分区步骤2.2 第二次分区步骤2.3 第三次分区步骤2.4 第四次分区步骤3.快速排序代码实现1.快速排序 1.…

快速排序基本原理

  • 1.快速排序
    • 1.1 基本原理
    • 1.2 快速排序执行步骤
      • 1.2.1 分区包含步骤
      • 1.2.1 分区步骤
    • 1.3 快速排序大O记法表示
  • 2. 将[0,5,2,1,6,3]进行快速排序 【实战】
    • 2.1 第一次分区步骤
    • 2.2 第二次分区步骤
    • 2.3 第三次分区步骤
    • 2.4 第四次分区步骤
  • 3.快速排序代码实现

1.快速排序

1.1 基本原理

  • 快速排序依赖于一个名为分区的概念
  • 分区:从数组随机选取一个值,以此值轴,将比它小的值放到它左边,比它大的值放到它右边

1.2 快速排序执行步骤

1.2.1 分区包含步骤

  • 比较:每个值都要与轴做比较。
  • 交换:在适当时候将左右指针所指的两个值交换位置。

1.2.1 分区步骤

  • 第一次分区步骤

    1. 左指针逐个格子向右移动,当遇到大于或等于轴的值时,停止移动。
    2. 右指针逐个格子向左移动,当遇到小于或等于轴的值时,停止移动。
    3. 将两指针所指的值交换位置。
    4. 重复步骤,直至两指针重合或左指针移到右指针的右边。
    5. 将轴与左指针所指的值交换位置【左指针>轴时交换】。
  • 子数组分区
    6. 对其轴左右两侧的元素进行排序。
    7. 对轴左右的两个子数组递归重复第 1、2 步,两个子数组各自分区,并形成各自的轴以及由轴分隔的更小的子数组。然后对这些子数组分区。
    8. 当分出的子数组长度为 0 或 1 时,排序结束。

  • 每次分区完成时,在轴左侧的那些值肯定比轴要小,在轴右侧的那些值肯定比轴要大

  • 轴数据的值放在了正确的位置。

1.3 快速排序大O记法表示

  • 快速排序大O记法表示: O(NNN)

2. 将[0,5,2,1,6,3]进行快速排序 【实战】

2.1 第一次分区步骤

在这里插入图片描述

2.2 第二次分区步骤

在这里插入图片描述

2.3 第三次分区步骤

在这里插入图片描述

2.4 第四次分区步骤

在这里插入图片描述

3.快速排序代码实现

# 方式一【有排序步骤输出】,根据最大索引排序
alist = [6, 1, 2, 7, 9, 3, 4, 5, 10, 8]
def sort(alist, left, right, flag=True):if not flag:print('-' * 30 + '\tstart list\t' + '-' * 30)print(f"当前列表为:{alist},left:{left},right:{right}")axis_index = rightaxis = alist[axis_index]  # 轴值left_pointer = left  # 左指针right_pointer = right - 1  # 右指针if left_pointer > right_pointer:  # 判断左指针是否在右指针的右边,如果是:停止移动returnwhile True:while alist[left_pointer] < axis:left_pointer = left_pointer + 1while alist[right_pointer] > axis:  # 右指针向左移动right_pointer = right_pointer - 1if left_pointer < right_pointer:  # 指针未重合alist[left_pointer], alist[right_pointer] = alist[right_pointer], alist[left_pointer]print(f'左指针索引为:{left_pointer},右指针索引为:{right_pointer};左右指针交换后数组作为:{alist}')elif alist[left_pointer] > alist[axis_index]:alist[left_pointer], alist[axis_index] = alist[axis_index], alist[left_pointer]  # 轴值交换print(f'左指针索引为:{left_pointer},轴索引为:{axis_index};左指针与轴交换后数组作为:{alist}')breakelif left_pointer > right_pointer:print(f"左指针索引为:{left_pointer},右指针索引为:{right_pointer};左指针在右指针的右边,指针移动结束")breakprint(f'分区结束,数组为:{alist}')if left_pointer - left not in [0, 1]:print('-' * 30 + '\tleft list\t' + '-' * 30)sort(alist, left, left_pointer - 1)  # 排序左子数组if right - left_pointer not in [0, 1]:print('-' * 30 + '\tright list\t' + '-' * 30)sort(alist, left_pointer + 1, right)  # 排序右子数组return alistend=sort(alist, 0, len(alist) - 1, False)
print('-' * 30 + '\tend list\t' + '-' * 30)
print(f"最终排序结果为:{end}")# 方式二【无排序步骤输出】
alist = [6, 1, 2, 7, 9, 3, 4, 5, 10, 8]
def sort(alist, left, right):axis_index = right        # 轴索引axis = alist[axis_index]  # 轴值left_pointer = left  # 左指针right_pointer = right - 1  # 右指针if left_pointer > right_pointer:  # 判断左指针是否在右指针的右边,如果是:停止移动returnwhile True:while alist[left_pointer] < axis:  # 左指针向右移动left_pointer = left_pointer + 1while alist[right_pointer] > axis:  # 右指针向左移动right_pointer = right_pointer - 1if left_pointer < right_pointer:  # 指针未重合,左右指针调换alist[left_pointer], alist[right_pointer] = alist[right_pointer], alist[left_pointer]elif alist[left_pointer] > alist[axis_index]: # 左指针>轴alist[left_pointer], alist[axis_index] = alist[axis_index], alist[left_pointer]  # 轴值交换breakelif left_pointer > right_pointer:  # 左指针在右指针的右边breakif left_pointer - left not in [0, 1]:sort(alist, left, left_pointer - 1)  # 排序左子数组if right - left_pointer not in [0, 1]:sort(alist, left_pointer + 1, right)  # 排序右子数组return alist
end=sort(alist, 0, len(alist) - 1)
print(f"最终排序结果为:{end}")# 方式三 :根据索引0开始排序
alist = [6, 1, 2, 7, 9, 3, 4, 5, 10, 8]
def sort(alist, left, right):low = lefthigh = rightif low > high:returnmiddle = alist[low]while low != high:while low < high:if alist[high] > middle:high = high - 1else:alist[low] = alist[high]breakwhile low < high:if alist[low] < middle:low = low+1else:alist[high] = alist[low]breakalist[low] = middlesort(alist, left, low - 1)sort(alist, high + 1, right)return alistprint(sort(alist, 0, len(alist) - 1))

在这里插入图片描述

http://www.yayakq.cn/news/373730/

相关文章:

  • 做科研有什么好的网站seo优化器
  • 俄文企业网站建设做物流网站注意什么
  • 免费申请一个网站杭州万户网络
  • 任丘市网站建设王也头像图片
  • 高端网站建设天软科技wordpress批量替换标签
  • 做个小网站大概多少钱免费素材视频网站哪个最好
  • 如何制作自己的网站的邮箱wordpress中对视频排序
  • 秦都区建设局网站做同城网站需要哪些手续
  • 专业网站设计制作过程建设网站对企业有什么好处
  • 手机网站建设制作网站建设验收确认书免费下载
  • 怎么在网站上做按钮苏州网站设计公司有哪些
  • 青岛网站运营推广网站名字要备案吗
  • 海盐建设局网站wordpress 无法登陆 后台
  • 专业展示设计网站网站建设有前景吗
  • 自媒体网站建设论文房产网站程序
  • 宿州网站建设公司哪家好网站模板内容怎么添加图片
  • 黑龙江省城乡建设厅网站首页庄河网站建设公司
  • 如何对网站进行分析win7系统做网站服务器
  • 小规模网站开发税率织梦网站登录
  • 如何做彩票网站的源码产品包装设计公司
  • 白云网站建设建设网站需要几级安全等保
  • 网上商城网站 找什么做网站建设记账做什么科目
  • 阿里云网站域名证书网站开发主流技术
  • 卓越职业院校建设专题网站wordpress微博图床
  • 成品网页网站重庆做公司网站
  • 建设网站iss北京个人做网站
  • 网站开发 动易有利于seo的网站底部
  • 地质公园网站建设基于wordpress的开发教程
  • 影视网站怎么做app万能设计导航
  • flashfxp如何发布网站微商网站如何做推广方案