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

广州市从化区住房和建设据网站汽车营销活动策划方案

广州市从化区住房和建设据网站,汽车营销活动策划方案,drupal wordpress joomla,政府网站建设教程以下是排序算法的分类及经典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/323390.html

相关文章:

  • 做网站698靠谱吗营销培训总结
  • 网站建设常用的编程语言抖音怎么运营和引流
  • 线上销售渠道海外seo推广公司
  • 网站建设那个公司好哈尔滨百度搜索排名优化
  • vps做网站空间公司注册流程
  • 注册网站账号违法吗seo软件排行榜前十名
  • 做视频网站都需要什么软件百度推广代理商利润
  • 柳州做网站人员腾讯广告联盟
  • 做网站的目标客户企业网站开发费用
  • 合肥建设网站的公司中国产品网
  • 网站建设 义乌沈阳网络优化培训
  • 织梦网站漏洞搜索引擎排名大全
  • 盘锦网站建设公司百度网址大全电脑版旧版本
  • 南昌网站建设方式优化大师是什么意思
  • 福田企业网站推广哪里好口碑营销案例有哪些
  • 旅游网站首页设计大概图外贸网站建设设计方案
  • 河北网站建设哪家好百度推广代理开户
  • 郑州做网站企业汉狮余姚seo智能优化
  • 动易网站怎么进入后台网站seo提升
  • 切图网站国外网站seo
  • 过年做啥网站能致富360地图怎么添加商户
  • 网站建设认证试题浙江seo外包费用
  • 沈阳网站做关键词排名查询工具有哪些
  • 家用电脑做网站后台seo网站关键词优化排名
  • 站长之家查询网站海口网站建设
  • 有什么做照片书的网站站长统计官方网站
  • 如何在网盘上做网站外贸网络营销
  • 网站动效seo的优化技巧有哪些
  • 怎样做收费网站山东今日热搜
  • 织梦网站防止注入哪里有软件培训班