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

视频直播网站开发流程济南做门户网站开发公司

视频直播网站开发流程,济南做门户网站开发公司,小程序商家入驻平台,如何线下宣传网站经典排序算法 Python 示例 1. 冒泡排序 (Bubble Sort) def bubble_sort(arr):"""冒泡排序算法时间复杂度: O(n)空间复杂度: O(1)稳定性: 稳定"""n len(arr)# 创建数组副本以避免修改原数组result arr.copy()for i in range(n - 1):swapped Fa…

经典排序算法 Python 示例

1. 冒泡排序 (Bubble Sort)

def bubble_sort(arr):"""冒泡排序算法时间复杂度: O(n²)空间复杂度: O(1)稳定性: 稳定"""n = len(arr)# 创建数组副本以避免修改原数组result = arr.copy()for i in range(n - 1):swapped = False# 每轮将最大元素"冒泡"到末尾for j in range(n - i - 1):if result[j] > result[j + 1]:# 交换元素result[j], result[j + 1] = result[j + 1], result[j]swapped = True# 如果没有发生交换,说明数组已经有序if not swapped:breakreturn result# 示例使用
arr1 = [64, 34, 25, 12, 22, 11, 90]
print('原数组:', arr1)
print('冒泡排序结果:', bubble_sort(arr1))

2. 选择排序 (Selection Sort)

def selection_sort(arr):"""选择排序算法时间复杂度: O(n²)空间复杂度: O(1)稳定性: 不稳定"""n = len(arr)result = arr.copy()for i in range(n - 1):# 找到未排序部分的最小元素索引min_index = ifor j in range(i + 1, n):if result[j] < result[min_index]:min_index = j# 将最小元素与未排序部分的第一个元素交换if min_index != i:result[i], result[min_index] = result[min_index], result[i]return result# 示例使用
arr2 = [64, 34, 25, 12, 22, 11, 90]
print('原数组:', arr2)
print('选择排序结果:', selection_sort(arr2))

3. 插入排序 (Insertion Sort)

def insertion_sort(arr):"""插入排序算法时间复杂度: O(n²)空间复杂度: O(1)稳定性: 稳定"""result = arr.copy()for i in range(1, len(result)):key = result[i]j = i - 1# 将大于key的元素向右移动while j >= 0 and result[j] > key:result[j + 1] = result[j]j -= 1result[j + 1] = keyreturn result# 示例使用
arr3 = [64, 34, 25, 12, 22, 11, 90]
print('原数组:', arr3)
print('插入排序结果:', insertion_sort(arr3))

4. 快速排序 (Quick Sort)

def quick_sort(arr):"""快速排序算法时间复杂度: 平均 O(n log n),最坏 O(n²)空间复杂度: O(log n)稳定性: 不稳定"""if len(arr) <= 1:return arrpivot = arr[len(arr) // 2]left = [x for x in arr if x < pivot]middle = [x for x in arr if x == pivot]right = [x for x in arr if x > pivot]return quick_sort(left) + middle + quick_sort(right)# 原地快速排序版本
def quick_sort_inplace(arr, low=0, high=None):"""原地快速排序"""if high is None:high = len(arr) - 1arr = arr.copy()if low < high:pi = partition(arr, low, high)quick_sort_inplace(arr, low, pi - 1)quick_sort_inplace(arr, pi + 1, high)return arrdef partition(arr, low, high):"""分区函数"""pivot = arr[high]i = low - 1for j in range(low, high):if arr[j] < pivot:i += 1arr[i], arr[j] = arr[j], arr[i]arr[i + 1], arr[high] = arr[high], arr[i + 1]return i + 1# 示例使用
arr4 = [64, 34, 25, 12, 22, 11, 90]
print('原数组:', arr4)
print('快速排序结果:', quick_sort(arr4))

5. 归并排序 (Merge Sort)

def merge_sort(arr):"""归并排序算法时间复杂度: O(n log n)空间复杂度: O(n)稳定性: 稳定"""if len(arr) <= 1:return arrmid = len(arr) // 2left = merge_sort(arr[:mid])right = merge_sort(arr[mid:])return merge(left, right)def merge(left, right):"""合并两个已排序的数组"""result = []left_index = right_index = 0# 合并两个已排序的数组while left_index < len(left) and right_index < len(right):if left[left_index] < right[right_index]:result.append(left[left_index])left_index += 1else:result.append(right[right_index])right_index += 1# 添加剩余元素result.extend(left[left_index:])result.extend(right[right_index:])return result# 示例使用
arr5 = [64, 34, 25, 12, 22, 11, 90]
print('原数组:', arr5)
print('归并排序结果:', merge_sort(arr5))

6. 堆排序 (Heap Sort)

def heap_sort(arr):"""堆排序算法时间复杂度: O(n log n)空间复杂度: O(1)稳定性: 不稳定"""result = arr.copy()n = len(result)# 构建最大堆for i in range(n // 2 - 1, -1, -1):heapify(result, n, i)# 逐个提取元素for i in range(n - 1, 0, -1):result[0], result[i] = result[i], result[0]  # 将当前最大元素移到末尾heapify(result, i, 0)  # 重新调整堆return resultdef heapify(arr, n, i):"""调整堆结构"""largest = ileft = 2 * i + 1right = 2 * i + 2if left < n and arr[left] > arr[largest]:largest = leftif right < n and arr[right] > arr[largest]:largest = rightif largest != i:arr[i], arr[largest] = arr[largest], arr[i]heapify(arr, n, largest)# 示例使用
arr6 = [64, 34, 25, 12, 22, 11, 90]
print('原数组:', arr6)
print('堆排序结果:', heap_sort(arr6))

7. 计数排序 (Counting Sort)

def counting_sort(arr):"""计数排序算法(适用于范围较小的整数)时间复杂度: O(n + k),k为数据范围空间复杂度: O(k)稳定性: 稳定"""if not arr:return arr# 找到最大值和最小值min_val = min(arr)max_val = max(arr)# 创建计数数组count = [0] * (max_val - min_val + 1)# 统计每个元素出现的次数for num in arr:count[num - min_val] += 1# 重构排序后的数组result = []for i in range(len(count)):result.extend([i + min_val] * count[i])return result# 示例使用
arr7 = [4, 2, 2, 8, 3, 3, 1]
print('原数组:', arr7)
print('计数排序结果:', counting_sort(arr7))

实际中的应用

1. 数据库系统

  • 索引构建:数据库索引通常需要排序来提高查询效率
  • 查询优化:ORDER BY 子句的实现依赖于排序算法
  • 连接操作:排序-合并连接算法用于表连接操作

2. 搜索引擎

  • 搜索结果排序:根据相关性对搜索结果进行排序
  • 网页排名:PageRank 等算法需要对网页进行排序
  • 倒排索引:构建搜索引擎的核心数据结构

3. 操作系统

  • 进程调度:根据优先级对进程进行排序
  • 内存管理:空闲内存块的管理需要排序
  • 文件系统:目录项的排序显示

4. 图形处理

  • 渲染管线:根据深度对图形元素进行排序(Z-buffer算法)
  • 可见性判断:画家算法需要对图元按深度排序
  • 动画处理:关键帧的排序和插值

5. 金融系统

  • 交易撮合:买卖订单按照价格和时间排序
  • 风险评估:对投资组合按风险等级排序
  • 报表生成:财务数据的排序展示

6. 电商系统

  • 商品推荐:根据用户偏好对商品进行排序
  • 价格比较:商品按价格排序展示
  • 库存管理:商品按库存量排序管理

7. 社交媒体

  • 信息流排序:根据时间、热度等对内容排序
  • 好友推荐:按相关性对推荐好友排序
  • 消息处理:聊天记录按时间排序

8. 科学计算

  • 数据分析:实验数据的排序和统计
  • 模拟计算:粒子按位置排序以优化计算
  • 生物信息学:基因序列的排序比对

9. 游戏开发

  • 排行榜:玩家得分排序
  • 碰撞检测:游戏对象按空间位置排序优化检测
  • AI决策:游戏AI根据评估函数对可能动作排序

10. 网络通信

  • 数据包排序:TCP协议中对数据包按序号排序
  • 负载均衡:根据服务器负载对请求排序分配
  • 路由选择:网络路由按成本排序选择最优路径

11. 机器学习

  • 特征排序:按重要性对特征进行排序
  • K近邻算法:需要对距离进行排序找到最近邻居
  • 聚类算法:某些聚类算法需要排序操作

12. 数据分析与可视化

  • 统计分析:对数据进行排序以便分析趋势
  • 图表绘制:柱状图、折线图等需要排序数据
  • 报表生成:按不同维度对数据进行排序展示
http://www.dtcms.com/a/485612.html

相关文章:

  • 公司做网站怎么做高职思政主题网站建设作用
  • 山东省建设科技协会网站首页wordpress 图片丢失
  • 蛋糕行业网站建设方案微信商户平台登录官网
  • 企业网站搜索优化网络推广网店托管代运营怎么样
  • 网站建设书籍免费网站建设的客户需求分析调研表
  • 做影视网站对服务器要求代写稿子的平台
  • 大题小做网站哈尔滨网站设计公司地址
  • 宁海县城镇建设局网站WordPress建站教程 网盘
  • 手机上自己做网站吗深圳域名注册公司
  • 后台风格网站开发平台网站多少钱
  • 网站常用的中文字体设计免费素材网站有哪些
  • 网站维护合同模板山东泰安房价2023最新价格
  • 国外做多媒体展览的网站上海哪家做公司网站
  • 白人与黑人做爰网站征婚网站怎么做
  • 住宅与建设部网站易店无忧官网
  • 重庆网站推广计划宁波网站seo诊断工具
  • 网站访问量来源网站建设 杭州市萧山区
  • 专业网站建设制作价格开发一个企业官网多少钱
  • 网站cms系统源码go 做视频网站
  • 网站建设 工作方案2021深圳装修公司排名前十强
  • 长春网站建设找源晟品牌策划设计
  • 无锡网站推广$做下拉去118cr做一个网站最便宜多少钱
  • 台州网站制作公司python基础教程ppt
  • 南宁网站建设官网企业网站建立哪
  • 江西网站开发费用做移动网站优化排名首页
  • 网站如何提交关键词淘宝店铺网站建设可行性报告
  • 建站公司互橙知乎建企业网站怎么做
  • 做网站付款方式在门户网站做产品单页多少钱一天
  • 网站建设规划方案.ppt全国招商代理项目
  • wordpress 4.7.5 中文优质的seo快速排名优化