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

标智客logo在线设计生成器安徽网站推广优化

标智客logo在线设计生成器,安徽网站推广优化,免费ppt模板公众号,织梦同时运行多个网站一、Python中的排序 (一)内置排序函数sorted() 基本用法 sorted()函数可以对所有可迭代对象进行排序操作,返回一个新的列表,原列表不会被修改。例如,对于一个简单的数字列表nums [3, 1, 4, 1, 5, 9, 2, 6]&#xff…

一、Python中的排序

(一)内置排序函数sorted()

  1. 基本用法
    • sorted()函数可以对所有可迭代对象进行排序操作,返回一个新的列表,原列表不会被修改。
    • 例如,对于一个简单的数字列表nums = [3, 1, 4, 1, 5, 9, 2, 6],使用sorted(nums)后会得到[1, 1, 2, 3, 4, 5, 6, 9]
    • 对于字符串列表,如words = ["apple", "banana", "cherry", "date"]sorted(words)会按照字母顺序排序,得到['apple', 'banana', 'cherry', 'date']
  2. 关键字参数
    • key参数
      • 可以通过key参数指定一个函数,该函数会在排序时被调用,用于提取比较的键。
      • 比如,如果有一个包含数字和字母的列表mixed_list = ['a', 'c', 'b', 1, 3, 2],我们想要按照字符的ASCII值进行排序,可以使用sorted(mixed_list, key=str)。因为str函数会将数字转换为字符串,然后按照字符串的ASCII值排序,结果是[1, 2, 3, 'a', 'b', 'c']
      • 对于更复杂的数据结构,如一个包含学生信息的列表students = [{'name': 'Alice', 'age': 23}, {'name': 'Bob', 'age': 20}, {'name': 'Charlie', 'age': 22}],如果按照年龄排序,可以使用sorted(students, key=lambda x: x['age']),得到[{'name': 'Bob', 'age': 20}, {'name': 'Charlie', 'age': 22}, {'name': 'Alice', 'age': 23}]
    • reverse参数
      • 用于指定排序顺序,默认为False,表示升序排序。如果设置为True,则为降序排序。
      • 例如,sorted(nums, reverse=True)会将数字列表nums降序排序为[9, 6, 5, 4, 3, 2, 1, 1]

(二)列表的sort()方法

  1. 基本用法
    • sort()方法是列表对象的一个方法,它会直接对原列表进行排序,不返回新的列表。
    • 对于列表nums = [3, 1, 4, 1, 5, 9, 2, 6],调用nums.sort()后,nums就变成了[1, 1, 2, 3, 4, 5, 6, 9]
  2. 关键字参数
    • 它也支持keyreverse参数,用法和sorted()函数类似。例如,nums.sort(key=lambda x: -x)会按照数字的相反数进行排序,即降序排序。

二、C++中的排序

(一)标准库函数sort()

  1. 头文件
    • 在C++中,要使用sort()函数,需要包含头文件<algorithm>
  2. 基本用法
    • sort()函数的原型是void sort(RandomAccessIterator first, RandomAccessIterator last),其中firstlast分别是迭代器,表示要排序的范围。
    • 例如,对于一个数组int arr[] = {3, 1, 4, 1, 5, 9, 2, 6};,可以使用sort(arr, arr + 8);来对整个数组进行升序排序。
    • 对于std::vector<int> vec = {3, 1, 4, 1, 5, 9, 2, 6};,可以使用sort(vec.begin(), vec.end());来对vector容器中的元素进行排序。
  3. 自定义比较函数
    • 可以通过提供第三个参数来自定义排序规则。这个参数是一个比较函数,它接收两个参数,返回一个布尔值。
    • 比如,要对一个结构体数组按照某个成员进行排序,假设有一个结构体struct Person { std::string name; int age; };和一个数组Person people[] = {{"Alice", 23}, {"Bob", 20}, {"Charlie", 22}};,如果按照年龄升序排序,可以这样写:
      bool compareAge(const Person &a, const Person &b) {return a.age < b.age;
      }
      sort(people, people + 3, compareAge);
      
    • 也可以使用C++11的lambda表达式来简化比较函数的定义,例如sort(vec.begin(), vec.end(), [](int a, int b) { return a > b; });可以对vector中的整数进行降序排序。

(二)stable_sort()

  1. 稳定性
    • stable_sort()sort()类似,但它是一个稳定排序算法。稳定排序算法是指当两个元素相等时,它们在排序后的序列中的相对位置保持不变。
    • 例如,对于一个包含重复元素的数组int arr[] = {3, 1, 4, 1, 5, 9, 2, 6};,使用sort(arr, arr + 8);stable_sort(arr, arr + 8);都会得到[1, 1, 2, 3, 4, 5, 6, 9]。但如果数组中有对象,且对象的比较键相同,但其他属性不同,stable_sort()会保持这些对象的原始相对顺序。
  2. 用法
    • 它的用法和sort()类似,也可以接受自定义比较函数。例如,对于一个std::vector<Person>,如果按照名字的字典序进行稳定排序,可以这样写:
      stable_sort(vec.begin(), vec.end(), [](const Person &a, const Person &b) {return a.name < b.name;
      });
      

三、Python和C++排序的性能比较

  1. Python排序
    • Python的sorted()sort()方法底层实现是Timsort算法,它是一种混合排序算法,结合了归并排序和插入排序的优点。对于大多数情况,其时间复杂度为O(nlogn),在实际应用中表现很高效。
  2. C++排序
    • C++的sort()函数通常实现为快速排序、归并排序或堆排序的混合体,具体实现可能因标准库的实现而异。它的平均时间复杂度也是O(nlogn),但在最坏情况下(如快速排序的输入为已经有序的数组),可能会退化到O(n^2)。不过,现代C++标准库通常会优化这种情况。
    • stable_sort()通常基于归并排序,保证了稳定性,时间复杂度为O(nlogn)。
http://www.dtcms.com/wzjs/145189.html

相关文章:

  • 东坑网站建设厦门百度开户
  • 做流量网站有收入吗齐三seo顾问
  • 绍兴seo网站管理防止恶意点击软件管用吗
  • 美国网站不备案 怎样打击网络色情高级seo招聘
  • 做视频的音乐哪里下载网站个人信息怎么在百度推广
  • 域名服务器没有该网站的域的列表如何线上推广引流
  • 网站后台管理密码忘记深圳做网站公司哪家好
  • 郑州做网站的公司哪家seo代码优化包括哪些
  • js 跳转其他网站北京seo服务商找行者seo
  • 响应式网站模板 食品深圳百度推广代理商
  • 广州市从化区住房和建设局网站核心关键词如何优化
  • 织梦网站联系我们的地图怎么做seo关键词优化哪个平台好
  • 天津seo推广方法青岛seo建站
  • 不会网站维护可以做吗a5站长网网站交易
  • 有没有做生物科技相关的网站公司网络推广的作用
  • 网站平台怎么做的提高网站流量的软文案例
  • 熊掌号怎么域名做网站请你设计一个网络营销方案
  • 怎么设计手机网站百度网站域名注册
  • 如何知道一个网站是谁做的关键词排名怎么查
  • 做剧情网站侵权吗免费p站推广网站入口
  • txt发布wordpress关键词优化的方法有哪些
  • 网站关键词优化排名要怎么做百度小说网
  • 门户网站系统建设方案seo自学网官方
  • 淘客手机网站模板安徽企业网站建设
  • 政府门户网站制度建设情况小红书seo排名帝搜软件
  • 点击网站出现微信二维码的链接怎么做手机端seo
  • 网站首页一般做多大尺寸认识网络营销
  • 南宁网站开发企业成都搜索优化排名公司
  • 平面设计制作郑州优化公司有哪些
  • 锦州网站建设公司广告投放平台排名