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

做公司网站建设价格低虚拟机网站建设

做公司网站建设价格低,虚拟机网站建设,网站怎么识别手机跳转,wordpress插件外贸以下是排序算法的分类及经典Python实现,包含时间复杂度、空间复杂度与稳定性说明: 一、比较类排序(通过元素间比较决定顺序) 1. 交换排序 冒泡排序 时间复杂度:O(n)(最优O(n)已优化) 空间复杂度…

以下是排序算法的分类及经典Python实现,包含时间复杂度、空间复杂度与稳定性说明:


一、比较类排序(通过元素间比较决定顺序)

1. 交换排序
  1. 冒泡排序
    时间复杂度:O(n²)(最优O(n)已优化)
    空间复杂度:O(1)
    稳定性:稳定

    def bubble_sort(arr):n = len(arr)for i in range(n):swapped = Falsefor j in range(n-i-1):if arr[j] > arr[j+1]:arr[j], arr[j+1] = arr[j+1], arr[j]swapped = Trueif not swapped: break  # 提前终止优化return arr
    
  2. 快速排序
    时间复杂度:平均O(n log n),最差O(n²)
    空间复杂度:O(log n)(递归栈)
    稳定性:不稳定

    def quick_sort(arr):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)
    
2. 插入排序
  1. 直接插入排序
    时间复杂度:O(n²)(最优O(n))
    空间复杂度:O(1)
    稳定性:稳定
    def insertion_sort(arr):for i in range(1, len(arr)):key = arr[i]j = i - 1while j >= 0 and key < arr[j]:arr[j+1] = arr[j]j -= 1arr[j+1] = keyreturn arr
    
3. 选择排序
  1. 简单选择排序
    时间复杂度:O(n²)
    空间复杂度:O(1)
    稳定性:不稳定
    def selection_sort(arr):for i in range(len(arr)):min_idx = ifor j in range(i+1, len(arr)):if arr[j] < arr[min_idx]:min_idx = jarr[i], arr[min_idx] = arr[min_idx], arr[i]return arr
    
4. 归并排序

时间复杂度:O(n log n)
空间复杂度:O(n)
稳定性:稳定

def merge_sort(arr):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):res = []i = j = 0while i < len(left) and j < len(right):if left[i] <= right[j]:res.append(left[i])i += 1else:res.append(right[j])j += 1res.extend(left[i:] or right[j:])return res

二、非比较类排序(利用数值特征避免元素间比较)

1. 计数排序

时间复杂度:O(n + k)(k为数据范围)
空间复杂度:O(n + k)
稳定性:稳定(反向填充时)
适用场景:整数且范围较小

def counting_sort(arr):max_val = max(arr)count = [0] * (max_val + 1)for num in arr:count[num] += 1res = []for i in range(len(count)):res.extend([i] * count[i])return res
2. 基数排序

时间复杂度:O(nk)(k为最大位数)
空间复杂度:O(n + k)
稳定性:稳定

def radix_sort(arr):max_val = max(arr)exp = 1while max_val // exp > 0:buckets = [[] for _ in range(10)]for num in arr:buckets[(num // exp) % 10].append(num)arr = [num for bucket in buckets for num in bucket]exp *= 10return arr
3. 桶排序

时间复杂度:平均O(n + k),最差O(n²)
空间复杂度:O(n + k)
适用场景:均匀分布的数据

def bucket_sort(arr, bucket_size=5):min_val, max_val = min(arr), max(arr)bucket_count = (max_val - min_val) // bucket_size + 1buckets = [[] for _ in range(bucket_count)]for num in arr:idx = (num - min_val) // bucket_sizebuckets[idx].append(num)res = []for bucket in buckets:res.extend(sorted(bucket))return res

三、总结对比

算法最优时间平均时间最差时间空间稳定适用场景
冒泡排序O(n)O(n²)O(n²)O(1)教学示例
快速排序O(n log n)O(n log n)O(n²)O(log n)通用高效排序
归并排序O(n log n)O(n log n)O(n log n)O(n)外部排序、稳定需求
计数排序O(n + k)O(n + k)O(n + k)O(n + k)小范围整数
基数排序O(nk)O(nk)O(nk)O(n + k)多位数整数

根据数据规模与类型选择合适算法:小数据用简单排序(如插入),大数据优先选O(n log n)算法,特定场景使用非比较排序。

http://www.dtcms.com/wzjs/592827.html

相关文章:

  • 网站内容更新制作芝士需要哪些设备
  • 国外创意网站欣赏快乐十分网站开发
  • 直接进网站的浏览器wordpress 果酱小程序
  • 商家网站建设模板股票查询网站模板 wordpress
  • 网站建设 赚钱吗适合高中生做网站的主题
  • 建设论坛网站自学注册人力资源公司大概要多少钱
  • wordpress网站全过程长沙专业外贸网站建设
  • 怎么做购物微信网站wordpress 多语言插件哪个好
  • 优化网站 提高查询门户网站 解决方案
  • 网站获取信息wordpress撰写设置
  • vue做购物网站黄冈商城网站制作哪家好
  • 济南网站建设用途沈阳旅游团购网站建设
  • 建设工程网站广州网站代运营 如何纳税
  • 北京南站停车场收费标准wordpress好用的地图
  • 重庆网站优化公司哪家便宜微信商城后台管理系统
  • 哪里有做桥梁模型的网站开什么工作室最赚钱
  • 茂名免费做网站绍兴网站定制公司
  • 建设自己的网站首页wordpress nginx 500错误
  • 在哪可以接企业网站建设的活h5响应式音乐网站模板
  • 怎么说服企业做网站临沂seo代理商
  • 设计公司网站什么重要找网站做外链是什么意思
  • 阜新网站优化哪个网站建设最好
  • 专门做外国的网站吗开发网站公司排行
  • 大连网站建设那家好设计网页的目的
  • 做外贸仿牌网站深圳市福田区公司
  • 报电子商务(网站建设与运营)广西南宁生活网
  • 海南省城乡住房建设厅网站首页外贸网站定制建站
  • 中移建设 网站开发者官网
  • 最好用的免费建站个人站长网站
  • 网站建设销售ppt模板响应式建站网站