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

西安网站建设盈科百度企业

西安网站建设盈科,百度企业,做网站jw100,上海企业建站步骤1. 基础排序算法 1.1 冒泡排序(Bubble Sort) 原理: 依次比较相邻元素,将较大的元素逐步"冒泡"到右侧。 def bubble_sort(arr):n len(arr)for i in range(n):swapped Falsefor j in range(0, n-i-1):if arr[j] >…

1. 基础排序算法

1.1 冒泡排序(Bubble Sort)

原理
依次比较相邻元素,将较大的元素逐步"冒泡"到右侧。

def bubble_sort(arr):n = len(arr)for i in range(n):swapped = Falsefor j in range(0, n-i-1):if arr[j] > arr[j+1]:arr[j], arr[j+1] = arr[j+1], arr[j]swapped = Trueif not swapped:breakreturn arr

时间复杂度

  • 最佳:O(n)(已有序时)
  • 平均/最差:O(n²)
    适用场景:教学用途或小型数据集

1.2 选择排序(Selection Sort)

原理
每次遍历选择未排序部分的最小值,放到已排序序列末尾。

def selection_sort(arr):n = len(arr)for i in range(n):min_idx = ifor j in range(i+1, n):if arr[j] < arr[min_idx]:min_idx = jarr[i], arr[min_idx] = arr[min_idx], arr[i]return arr

时间复杂度

  • 所有情况:O(n²)
    适用场景:内存敏感的小型数据集

1.3 插入排序(Insertion Sort)

原理
将每个元素插入到已排序序列的合适位置。

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] = key return arr

时间复杂度

  • 最佳:O(n)(已有序时)
  • 平均/最差:O(n²)
    适用场景:小规模数据或基本有序的数据

2. 高效排序算法

2.1 快速排序(Quick Sort)

原理
分治策略,选取基准值将数组分为两部分递归排序。

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)

时间复杂度

  • 平均:O(n log n)
  • 最差:O(n²)(当已有序且选第一个元素为基准时)
    优化:三数取中法选择基准
    适用场景:通用排序,尤其适合大规模随机数据

2.2 归并排序(Merge Sort)

原理
分治法将数组拆分为最小单元后合并排序。

def merge_sort(arr):if len(arr) > 1:mid = len(arr)//2L = arr[:mid]R = arr[mid:]merge_sort(L)merge_sort(R)i = j = k = 0while i < len(L) and j < len(R):if L[i] < R[j]:arr[k] = L[i]i += 1else:arr[k] = R[j]j += 1k += 1while i < len(L):arr[k] = L[i]i += 1k += 1while j < len(R):arr[k] = R[j]j += 1k += 1return arr

时间复杂度

  • 所有情况:O(n log n)
    适用场景:需要稳定排序且内存充足时

2.3 堆排序(Heap Sort)

原理
利用堆数据结构实现选择排序。

def heapify(arr, n, i):largest = il = 2 * i + 1r = 2 * i + 2if l < n and arr[i] < arr[l]:largest = lif r < n and arr[largest] < arr[r]:largest = rif largest != i:arr[i], arr[largest] = arr[largest], arr[i]heapify(arr, n, largest)def heap_sort(arr):n = len(arr)for i in range(n//2-1, -1, -1):heapify(arr, n, i)for i in range(n-1, 0, -1):arr[i], arr[0] = arr[0], arr[i]heapify(arr, i, 0)return arr

时间复杂度

  • 所有情况:O(n log n)
    适用场景:需要O(1)空间复杂度的高效排序

3. 特殊场景算法

3.1 计数排序(Counting Sort)

原理
统计元素出现次数,适用于整数范围较小的情况。

def counting_sort(arr):max_val = max(arr)count = [0] * (max_val+1)for num in arr:count[num] += 1sorted_arr = []for i in range(len(count)):sorted_arr.extend([i]*count[i])return sorted_arr

时间复杂度

  • O(n + k)(k为数据范围)
    适用场景:整数排序且值域较小

3.2 基数排序(Radix Sort)

原理
按位排序,从低位到高位依次排序。

def counting_sort_for_radix(arr, exp):n = len(arr)output = [0] * ncount = [0] * 10for i in range(n):index = (arr[i] // exp) % 10count[index] += 1for i in range(1,10):count[i] += count[i-1]i = n-1while i >= 0:index = (arr[i] // exp) % 10output[count[index]-1] = arr[i]count[index] -= 1i -= 1for i in range(n):arr[i] = output[i]def radix_sort(arr):max_val = max(arr)exp = 1while max_val // exp > 0:counting_sort_for_radix(arr, exp)exp *= 10return arr

时间复杂度

  • O(nk)(k为最大位数)
    适用场景:整数或字符串排序

4. Python内置排序

Python的sorted()list.sort()使用Timsort算法(归并排序+插入排序的混合算法):

# 基本排序
sorted_list = sorted([3,1,4,2])
lst = [3,1,4,2]
lst.sort()# 自定义排序
sorted(students, key=lambda x: x.age)  # 按对象属性排序
sorted(words, key=len)                 # 按字符串长度排序

算法对比表

算法时间复杂度(平均)是否稳定是否原地适用场景
冒泡排序O(n²)教学/小数据
快速排序O(n log n)通用大规模数据
归并排序O(n log n)需要稳定排序
堆排序O(n log n)内存敏感的大数据
TimsortO(n log n)Python内置通用排序

选择建议

  1. 小数据量(n < 1000):插入排序或选择排序
  2. 通用场景:优先使用内置的sorted()list.sort()
  3. 内存敏感:堆排序
  4. 稳定排序需求:归并排序或Timsort
  5. 整数范围小:计数排序/基数排序
http://www.dtcms.com/wzjs/334259.html

相关文章:

  • 网站百度seo推广怎么做十大外贸平台
  • 设计参考图网站市场营销策划案的范文
  • 怎么做视频网站百度官方平台
  • 网站推广服务合同模板怎样优化网站排名
  • 打鱼跟电子游戏网站怎么做谷歌seo营销
  • 做餐饮如何加入外卖网站seo怎么优化软件
  • 网站seo教程网页制作模板
  • 宜昌平台网站建设英语培训机构前十名
  • 做国外网站建设推广产品引流的最佳方法
  • 做网站哪家seo优化技巧有哪些
  • 最牛黑客做的白粉交易网站爱站网关键词查询网站
  • 高端的网站建设网络营销比较常用的营销模式
  • 想让网站的文章都被收录怎么做手游推广渠道平台
  • 黔西南州网站建设公司郑州seo服务
  • 注册网站有什么风险吗最新消息
  • 自己做盗版小说网站吗企业培训心得
  • 网站打开速度很慢视频号链接怎么获取
  • 浙江网站建设流程爱站网关键词搜索
  • 西安网站设计方案seo自动推广工具
  • 安庆公司做网站培训计划模板
  • 深圳电商网站建设公司百度网页版登录首页
  • 开发网站开票写什么如何写推广软文
  • wordpress主题异次元软件世界北京seo费用是多少
  • 编辑网页用什么软件seo优化的内容有哪些
  • 自己切片做网站游戏推广怎么做挣钱
  • 在郑州做网站国内做网站的公司
  • 河北省企业信用信息查询公示系统四川seo
  • 一个做3dh视频的国外网站2345导航网址
  • 建站服务发票优化网站的目的
  • 挖金矿游戏网站建设热点新闻事件及观点