• python 排序(冒泡排序,选择排序,快速排序)


    1.冒泡排序:

    1.第一轮,从第一个元素开始,第一个元素和后面的元素对比,如果比第一个元素大,就交换位置。每个相邻的元素进行比较,一轮后,最小的就排在了最后。

    2.第二轮,从第二个元素开始和后面的元素作比较,如果比第二个元素大就交换位置,每个相邻的元素进行比较。

    3.比较轮数为元素的个数-1

    1. #冒泡排序
    2. num1 = [6,4,3,2,1]
    3. #控制比较轮次
    4. for i in range(1,len(num1)):
    5. #每一轮比较后,往后挪动一位继续下一轮比较
    6. for j in range(len(num1)-i)
    7. if num1[j] > num1[j+1]:
    8. num1[j],num1[j+1] = num1[j+1],num1[j]
    9. print(num1)

    结果:[1, 2, 3, 4, 6]

    2.选择排序

    选择排序思路

    1.从第一个元素开始,第一个元素依次和后面的每个元素比较,如果第一个元素大就交换位置,第一轮比较后,最小的元素就放在了第一个位置

    2.第二轮在第二个元素开始和后面的每个元素依次比较,如果第二个元素大,就交换位置。

    1. #选择排序
    2. def SelecterSort(n):
    3. #控制比较轮次
    4. for i in range(len(n)):
    5. #第i个元素和后面的每个元素依次比较
    6. for j in range(i+1,len(n)):
    7. if n[i]>n[j]:
    8. n[i],n[j] = n[j],n[i]
    9. print(n)
    10. n = [3,4,1,2,7,5,7]
    11. SelecterSort(n)

    3.快速排序(递归)

    1.选择第一个元素作为基数

    2.比基数小的放左边列表(左列表在次选择基数,进行左右分开)

    3.比基数大的放右边列表(右列表再次选择基数,进行左右分开)、

    4.直到列表中只有一个数的时候,结束

    1. #def q(arr):
    2. #递归出口
    3. if len(arr)<2:
    4. return arr
    5. elss:
    6. #基数
    7. z = arr[0]
    8. #左边排序
    9. l = [x for x in arr[1:] if x < z]
    10. r = [x for x in arr[1:] if x > z]
    11. return q(l) + [z] + q(r)
    12. if __name__ == '__main__':
    13. a = [1, 4, 3, 41, 6]
    14. aa = q(a)

  • 相关阅读:
    java面试题整理《集合篇》一
    在亚马逊购买产品时怎么选择自动收货方式
    项目初始配置-gitee关联
    10.20作业
    lightdb22.3-oracle 内置包兼容增强
    WebAssembly不是软件!它是计算机中的计算机
    linux log日志文件切割 提取时间段 某天 日志
    HarmonyOS开发案例:【图片编辑】
    前端面试题JavaScript篇——2022-09-09
    Linux上安装jdk Tomcat mysql redis等
  • 原文地址:https://blog.csdn.net/weixin_47347921/article/details/133555469