前言

这里主要给大家介绍的是啊哈算法中桶排序、冒泡排序和快速排序的python版本。

一、桶排序

book = [0 for _ in range(1001)] # 作为桶排序的桶
n = int(input())
nums = list(map(int, input().split()))
for i in range(n):book[nums[i]] += 1
# 输出
for i in range(1000,-1,-1): # 依次判断编号1000-0的桶看其内部是否存在元素for _ in range(book[i]):print(i, end = ' ')
"""
测试样例
10
8 100 50 22 15 6 1 1000 999 0
"""

二、冒泡排序

# 输入
n = int(input())
nums = list(map(int,input().split()))
# 进行冒泡排序
for i in range(n-1): # n个数只用进行n-1遍for j in range(n-i-1): # 每遍历一次确定最后一个元素,下次需要判断的元素就少一个if nums[j] < nums[j+1]:nums[j], nums[j+1] = nums[j+1], nums[j]
print(nums)
"""
测试样例
10
8 100 50 22 15 6 1 1000 999 0
"""

三、快速排序

def quicksort(left, right):if left > right:returni, j = left, righttemp = nums[left] # temp保存的是基函数while i != j:# 要先从右往左遍历while nums[j]  >= temp and i < j:j -= 1# 在从左往右遍历while nums[i] <= temp and i<j:i += 1if i < j: # 当哨兵没有相遇时nums[i], nums[j] = nums[j], nums[i]# 将基函数归位nums[left] = nums[i]nums[i] = temp# 因为第i个元素已经确定位置了因此之后需要判断的是区间[left, i-1]和区间[i+1, right]quicksort(left, i-1)quicksort(i+1, right)returnif __name__ == '__main__':n = int(input())nums =  list(map(int,input().split()))quicksort(0,n-1)print(nums)"""
测试样例
10
6 1 2 7 9 3 4 5 10 8
"""

总结

快速排序算法中的两个哨兵一定要先从右往左遍历,然后再从左往右遍历的,每次遍历完都将交换两个哨兵。

啊哈算法--排序算法 (python)相关推荐

  1. 排序算法--排序算法汇总

    排序算法无疑是学习数据结构中的重点内容,本文将给出排序算法的汇总. 下面是具体的实现: #include<stdio.h> #include<stdlib.h> #includ ...

  2. java 算法 排序算法_Java七种排序算法以及实现

    Java常见七种排序算法以及实现 最近学习一些排序算法,怕自己以后忘记就打算整理起来供自己复习 萌新一枚学习Java没多久,以下仅供参考.如有错误希望大佬指正,欢迎大家在评论区交流探讨. 1.冒泡排序 ...

  3. php+堆排序算法,排序算法-堆排序-php

    什么是堆排序 堆排序是我们经常使用的排序算法,它是利用堆的结构进行排序,堆是一种二叉树结构,并且它的父节点的值都大于子节点或者都小于子节点,如果大于,就是大顶堆,如果小于就是小顶堆. 根据堆的定义,我 ...

  4. 数据结构与算法 / 排序算法 / 堆排序

    一.定义 借助堆结构实现的排序算法被称为堆排序. 二.过程说明 1.建堆 (1)方法1 原地建堆,对于数组来说,从前往后:对于树来说,从下向上. 将数组的第一个元素作为堆顶,第二个元素做向堆中插入数据 ...

  5. 数据结构与算法 / 排序算法(3)

    一.桶排序(Bucket sort) 1.原理 将要排序的数据分到几个有序的桶里,每个桶里的数据再进行排序.桶内的数据排序完毕之后,再把桶里的数据依次取出,组成的序列就是有序的了. 2.原地排序? 属 ...

  6. 数据结构与算法 / 排序算法(2)

    一.归并排序 1.原理 采用分治思想.将数组分成前后两部分,先将这两部分进行排序,然后再将二者合并即可. 2.原地排序? 不属于原地排序.因为每次合并都需要申请大小为 n 的临时数组用于保存合并之后的 ...

  7. 数据结构与算法 / 排序算法(1)

    零.前言 1.常用的排序算法总结 排序算法种类 时间复杂度 是否基于比较 冒泡.插入.选择 O(n^2) √ 快排.归并 O(nlogn) √ 桶.计数.基数 O(n) × 2.算法的内存消耗 - 原 ...

  8. js 实现2的n次方计算函数_JS中数据结构与算法---排序算法

    排序算法的介绍 排序也称排序算法 (Sort Algorithm),排序是将 一组数据 , 依指定的顺序 进行 排列的过程 . 排序的分类 内部排序 : 指将需要处理的所有数据都加载 到 内部存储器( ...

  9. [算法]-排序算法之希尔排序

    希尔排序算法思想 希尔排序的实质就是分组插入排序,该方法又称缩小增量排序. 基本思想是:先将整个待排元素序列分割成若干个子序列(由相隔某个"增量"的元素组成的)分别进行直接插入排序 ...

  10. c语言 冒泡排序算法,排序算法_冒泡排序改进(c语言实现)

    下面是未经改进的冒泡排序算法: #include #include int a[10] = {1,4,3,5,23,2,45,6,3,5}; main() { int i,j,mid; int len ...

最新文章

  1. ERROR: Failed to resolve: com.github.CymChad:BaseRecyclerViewAdapterHelper:2.9.46
  2. 开源Math.NET基础数学类库使用(13)C#实现其他随机数生成器
  3. Xamarin.Android 使用 SQLite 出现 Index -1 requested, with a size of 10 异常
  4. 安卓应用程序插件化开发框架 -AAP Framework
  5. 边缘计算大热 AI芯片站上风口
  6. sql挂起小工具cleanup_SQL注入的攻防策略
  7. 【老王来了】之相爱相杀三层交换与链路聚合
  8. android模拟器与PC的端口映射(转)
  9. Lucene分词初探---LetterTokenizer
  10. 洛谷 P1048 采药 01背包入门
  11. 飘逸的python - yield简明教程
  12. Python数据分析处理库——Pandas
  13. ffmpeg翻译文档
  14. Git 和Bitbucket
  15. 如今的iOS开发者优胜劣汰,如何提升让自己不被淘汰?
  16. 大招来了!现实版“绝世武功”真的有!
  17. JavaFX开发的地图编辑器WiTKMapEditor(更新GitHub地址)
  18. 从三室心脏MRI影像检测主动脉瓣病变
  19. 华为又一重磅APP永久下线。网友:太难了……
  20. Boost串口通信 boost::asio::serial_port基本使用

热门文章

  1. vue的组件库如何从0开始
  2. Slop One算法-Collaborative Filtering
  3. 冷源法测试噪声系数(Noise Figure)详细步骤
  4. Java job interview:高校区LAN局域网校内网组建实践经验
  5. 1.1PHP语言标记、指令分隔符、注释
  6. 笔记本shift变粘贴,粘滞键设置已关闭
  7. ACM/ICPC 2018亚洲区预选赛北京赛站网络赛 C-cheat
  8. django 跨域出错 (corsheaders.E013) Origin ‘127.0.0.1:8080‘ in CORS_ORIGIN_WHITELIST is missing scheme or
  9. sed: -e expression #1, char 16: invalid reference \1 on `s‘ command‘s RHS
  10. android制作开放平台,OPPO 开放平台上线 Android 12 适配文档