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

专门做狗猫配套网站有什么意思网页设计个人网站

专门做狗猫配套网站有什么意思,网页设计个人网站,一起做网店货源,建设项目信息类网站一、排序的基本概念 排序是计算机科学中一项重要的操作,它将一组数据元素按照特定的顺序(如升序或降序)重新排列。排序算法的性能通常通过时间复杂度和空间复杂度来衡量。在 Python 中,有内置的排序函数,同时也可以手…

一、排序的基本概念

排序是计算机科学中一项重要的操作,它将一组数据元素按照特定的顺序(如升序或降序)重新排列。排序算法的性能通常通过时间复杂度和空间复杂度来衡量。在 Python 中,有内置的排序函数,同时也可以手动实现各种排序算法。

二、Python 内置排序函数

1. sorted() 函数

sorted() 函数可以对任何可迭代对象进行排序,并返回一个新的已排序列表,原对象不会被修改。

python

# 对列表进行排序
numbers = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]
sorted_numbers = sorted(numbers)
print("使用 sorted() 排序后的列表:", sorted_numbers)# 对字符串进行排序
string = "python"
sorted_string = ''.join(sorted(string))
print("对字符串排序后的结果:", sorted_string)# 对字典按键排序
dictionary = {'c': 3, 'a': 1, 'b': 2}
sorted_dict_keys = sorted(dictionary.keys())
print("对字典按键排序后的结果:", sorted_dict_keys)

2. list.sort() 方法

list.sort() 方法是列表对象的一个方法,它会直接对原列表进行排序,不返回新的列表。

python

numbers = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]
numbers.sort()
print("使用 list.sort() 排序后的列表:", numbers)

3. 自定义排序规则

sorted() 和 list.sort() 都可以接受一个 key 参数,用于指定排序的规则。

python

# 按字符串长度排序
words = ["apple", "banana", "cherry", "date"]
sorted_words = sorted(words, key=len)
print("按字符串长度排序后的列表:", sorted_words)# 按自定义函数排序
students = [{"name": "Alice", "age": 20},{"name": "Bob", "age": 18},{"name": "Charlie", "age": 22}
]
sorted_students = sorted(students, key=lambda x: x["age"])
print("按年龄排序后的学生列表:", sorted_students)

三、常见排序算法的 Python 实现

1. 冒泡排序(Bubble Sort)

冒泡排序是一种简单的排序算法,它重复地走访过要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。

python

def bubble_sort(arr):n = len(arr)for i in range(n):for j in range(0, n - i - 1):if arr[j] > arr[j + 1]:arr[j], arr[j + 1] = arr[j + 1], arr[j]return arrnumbers = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]
sorted_numbers = bubble_sort(numbers)
print("冒泡排序后的列表:", sorted_numbers)

2. 选择排序(Selection Sort)

选择排序是一种简单直观的排序算法。它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。

python

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 arrnumbers = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]
sorted_numbers = selection_sort(numbers)
print("选择排序后的列表:", sorted_numbers)

3. 插入排序(Insertion Sort)

插入排序是一种简单直观的排序算法。它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。

python

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 arrnumbers = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]
sorted_numbers = insertion_sort(numbers)
print("插入排序后的列表:", sorted_numbers)

4. 快速排序(Quick Sort)

快速排序是一种分治的排序算法。它选择一个基准值,将数组分为两部分,小于基准值的元素放在左边,大于基准值的元素放在右边,然后递归地对左右两部分进行排序。

python

def quick_sort(arr):if len(arr) <= 1:return arrelse:pivot = arr[0]left = [x for x in arr[1:] if x <= pivot]right = [x for x in arr[1:] if x > pivot]return quick_sort(left) + [pivot] + quick_sort(right)numbers = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]
sorted_numbers = quick_sort(numbers)
print("快速排序后的列表:", sorted_numbers)

5. 归并排序(Merge Sort)

归并排序是一种分治算法,它将一个数组分成两个子数组,分别对这两个子数组进行排序,然后将排好序的子数组合并成一个最终的有序数组。

python

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):result = []i = j = 0while i < len(left) and j < len(right):if left[i] < right[j]:result.append(left[i])i += 1else:result.append(right[j])j += 1result.extend(left[i:])result.extend(right[j:])return resultnumbers = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]
sorted_numbers = merge_sort(numbers)
print("归并排序后的列表:", sorted_numbers)

四、排序算法复杂度分析

排序算法平均时间复杂度最坏时间复杂度最好时间复杂度空间复杂度稳定性
冒泡排序\(O(n^2)\)\(O(n^2)\)\(O(n)\)\(O(1)\)稳定
选择排序\(O(n^2)\)\(O(n^2)\)\(O(n^2)\)\(O(1)\)不稳定
插入排序\(O(n^2)\)\(O(n^2)\)\(O(n)\)\(O(1)\)稳定
快速排序\(O(n log n)\)\(O(n^2)\)\(O(n log n)\)\(O(log n)\)不稳定
归并排序\(O(n log n)\)\(O(n log n)\)\(O(n log n)\)\(O(n)\)稳定

五、总结

  • Python 内置的 sorted() 函数和 list.sort() 方法使用方便,性能也比较好,在大多数情况下可以直接使用。
  • 不同的排序算法有不同的时间复杂度和空间复杂度,在选择排序算法时需要根据具体的应用场景进行选择。例如,当数据量较小时,简单的排序算法(如冒泡排序、选择排序、插入排序)可能更合适;当数据量较大时,高效的排序算法(如快速排序、归并排序)则更有优势。
http://www.dtcms.com/wzjs/207307.html

相关文章:

  • 已经备案的网站新增ip怎么做哈尔滨网络seo公司
  • 网站优化难吗网络营销推广服务商
  • 网站建设功能要求最近一两天的新闻有哪些
  • 商务网站的建设与管理百度热门排行榜
  • 邯郸小学网站建设自己搜20条优化措施
  • 删除织梦综合网站新闻软文范例大全
  • 自动网站建设收录网站有哪些
  • 城乡建设部网官方网站青岛网站建设微动力
  • 青岛做外贸网站的公司简介足球联赛排名
  • 四川省城乡和住房建设厅网站广州外贸推广
  • 学校网站建设过程无锡百度
  • 网站开发用什么语言比较好搜索引擎技术包括哪些
  • 帝国cms关闭网站排名优化怎么做
  • 可以做吸粉游戏的网站磁力搜索器
  • 2015做那个网站能致富怎么把平台推广出去
  • 济南制作网站信阳网络推广公司
  • 如何做cad的模板下载网站第三波疫情将全面大爆发
  • 正常网站 月均ip pv北京cms建站模板
  • 做建筑机械网站那个网站好百度快照是什么
  • 建网站需要多少钱石家庄出词
  • 网站的站外推广手段成人电脑基础培训班
  • 政府网站建设情况调查表在线注册免费域名
  • 做音乐网站需要什么济南专业seo推广公司
  • 乐站_网站建设_自助建站网站推广方案范文
  • 一起合伙做项目的网站百度如何发布作品
  • 西安网站建设地址郑州网站seo外包公司
  • 只买域名可以做自己的网站嘛网站怎么才能被百度收录
  • 广州设计网站建设点击宝seo
  • 顶做抱枕网站东莞seo排名优化
  • 日照建设局网站大连seo顾问