栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

【查找、排序~python】

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【查找、排序~python】

python 江湖
  • python 线性查找
      • 整体结果如下:
  • Python 二分查找
      • 运行结果如下:
  • python 插入排序
  • python 快速排序
    • (我最晒无限循环)代码如下:
      • 运行结果如下:
  • Pandas 每日一练:
    • 11、将DataFrame保存为EXCEL
    • 12、查看数据行列数
    • 13、提取popularity列值大于142小于150的行
    • 14、交换两列位置(两个方法)
    • 15、提取popularity列最大值所在行
      • 相关运行结果如下:
    • 每日一言:
      • 持续更新中...


个人昵称:lxw-pro
个人主页:欢迎关注 我的主页
个人感悟: “失败乃成功之母”,这是不变的道理,在失败中总结,在失败中成长,才能成为IT界的一代宗师。

python 线性查找

线性查找指按一定的顺序检查数组中每一个元素,直到找到所要寻找的特定值为止

def search(arr, n, x):

    for i in range(0, n):
        if arr[i] == x:
            return i
    return -1


# 在数组arr中查找字符D
arr = ['A', 'B', 'C', 'D', 'E']
x = 'C'
n = len(arr)
result = search(arr, n, x)
if result == -1:
    print("元素不在数组中")
else:
    print("元素在数组中的索引为", result)


# -*-1-*-
def LinearSearch(list):
    num = int(input('Number:t'))
    counter = 0
    null = 0

    for i in list:
        if i == num:
            print('Find number {} in place {}'.format(num,counter))
        else:
            null += 1
        counter += 1
    if null == counter:
        print('Don't.csv find it.')


list = {1, 2, 5, 8, 9, 12, 16, 18, 20, 0}
LinearSearch(list)

整体结果如下:


Python 二分查找

二分搜索是一种在有序数组中查找某一特定元素的搜索算法
这种搜索算法每一次比较都使搜索范围缩小一半

# 递归法:
# 返回x在arr中的索引,如果不存在返回-1:
def binarySearch (arr, l, r, x):
    if r >= l:
        mid = int(l + (r - l)/2)

        # 元素整好的中间位置
        if arr[mid] == x:
            return mid

        # 元素小于中间位置的元素,只需要在比较左边的元素
        elif arr[mid] > x:
            return binarySearch(arr,l,mid-l,x)

        # 元素大于中间位置的元素,只需要在比较右边的元素
        else:
            return binarySearch(arr,mid+l,r,x)

    else:
        # 不存在
        return -1


# 测试数组
arr = [2, 3, 4, 8, 20]
x = 8

# 函数调用
result = binarySearch(arr,0,len(arr)-1,x)

if result != -1:
    print("元素在数组中的索引为 %d" % result)
else:
    print("元素不在数组中")


运行结果如下:

————————————————————————————————————————————

python 插入排序

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

def insertionSort(arr):
    for i in range(1, len(arr)):
        key = arr[i]
        j = i-1
        while j >= 0 and key < arr[j]:
            arr[j+1] = arr[j]
            j -= 1
        arr[j+1] = key


arr = [2, 1, 6, 8, 5, 20, 12]
insertionSort(arr)
print("排序后的数组:")
for i in range(len(arr)):
    print("%d" % arr[i], end=' ')	# 输出 1 2 5 6 8 12 20 

或

arr = [20, 5, 8, 6, 9, 12, 52, 62, 4, 9]

def insertionSort(arr):
    for i in range(1,len(arr)):
        j = i
        while j > 0:
            if arr[j] < arr[j-1]:
                arr[j-1],arr[j] = arr[j],arr[j-1]
            j -= 1
    return arr


print(insertionSort(arr))	# 输出 [4, 5, 6, 8, 9, 9, 12, 20, 52, 62]

python 快速排序
'''
快速排序使用分治法(Divide and conquer)策略来把一个序列(list)分为较小和较大的2个子序列,
然后递归地排序两个子序列。

步骤为:

挑选基准值:从数列中挑出一个元素,称为"基准"(pivot);
分割:重新排序数列,所有比基准值小的元素摆放在基准前面,所有比基准值大的元素摆在基准后面(与基准值相等的数可以到任何一边)。在这个分割结束之后,对基准值的排序就已经完成;
递归排序子序列:递归地将小于基准值元素的子序列和大于基准值元素的子序列排序。
递归到最底部的判断条件是数列的大小是零或一,此时该数列显然已经有序。

选取基准值有数种具体方法,此选取方法对排序的时间性能有决定性影响

'''

可尝试写出快速排序算法的代码,毕竟代码这东西,用心打的多啦,效果真的非常好!!

————————————————————————————————————————————

(我最晒无限循环)代码如下:
import time, os


def main():
    content = '我最晒我最晒我最晒你也最晒'
    while True:
        os.system('cls')
        print(content)
        time.sleep(0.2)
        content = content[1:] + content[0]


if __name__ == '__main__':
    main()

***记得用鼠标点控制台上的红色正方形按钮——停止运行,不然电脑迟早崩溃***

运行结果如下:


————————————————————————————————————————————

Pandas 每日一练:

print()只为转行,方便查看运行结果

# -*- coding = utf-8 -*-
# @Time : 2022/7/20 14:07
# @Author : lxw_pro
# @File : pandas-3 练习.py
# @Software : PyCharm

import pandas as pd
import numpy as np

lxw3 = {"project": ['Python', 'Java', 'C', 'MySQL', 'Linux', 'Math', 'English', 'Python'],
       "popularity": [91, 88, 142, 136, np.nan, 146, 143, 148]}

df = pd.DataFrame(lxw3)
11、将DataFrame保存为EXCEL
df.to_excel("test3.xlsx")
print("over!")       # 显示完成情况(可不写)

print()		# 转行,方便查看结果
12、查看数据行列数
hl = df.shape
print(f"数据行列数为:{hl}")

print()
13、提取popularity列值大于142小于150的行
tq3 = df[(df['popularity'] > 142) & (df['popularity'] < 150)]
print("提取popularity列值大于142小于150的行为:n", tq3)

print()
14、交换两列位置(两个方法)
# 法一:
cols = df.columns[[1, 0]]   # 注意是两个中括号
df = df[cols]
print(df)

print()

# 法二:
tmp = df['popularity']
df.drop(labels=['popularity'], axis=1, inplace=True)
df.insert(0, 'popularity', tmp)
print(df)

print()
15、提取popularity列最大值所在行
print(df[df['popularity'] == df['popularity'].max()])
相关运行结果如下:

11-13:

14-15:


每日一言:

为什么时光叫做时光呢?
大慨是因为每一段时间里,都会有一份光吧!


持续更新中…

点赞,你的认可是我创作的动力!
收藏,你的青睐是我努力的方向!
评论,你的意见是我进步的财富!
关注,你的喜欢是我长久的坚持!

欢迎关注微信公众号【程序人生6】,一起探讨学习哦!!!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1017716.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号