ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

python算法初步(一)

2021-08-04 19:00:26  阅读:143  来源: 互联网

标签:min python max list range 初步 算法 排序 data


python算法初步(一)

冒泡排序

时间效率O(n²)
原理:依次比较相邻两个位置的元素大小,然后按照要求交换位置。

#从中选出一个数据(作为最小数据),然后和其他的数据依次比较,如果有更小的数据,那么就一次比较。
def select_sort(data):
    for i in range(len(data)-1):#需要选择的次数
        min = i
        for j in range(i+1,len(data)):#用于找到最小值所在的位置
            if data[min] > data[j]:
                min = j
        data[min],data[i] = data[i],data[min]#找到最小值所在的位置后,进行交换位置。
    return data

import random
data_list=[i*i for i in range(10)]
random.shuffle(data_list)
print("使用索引交换位置,从小到大排序",select_sort(data_list))      


print('*'*40)

#选择排序
#从中选出一个数据(作为最小数据),然后和其他的数据依次比较,如果有更小的数据,那么就一次比较。
def select_sort(data):
    for i in range(len(data)-1):#需要选择的次数
        min = data[i]
        for j in range(i+1,len(data)):#用于找到最小值所在的位置
            if min > data[j]:
                min = data[j]        
        data[data.index(min)],data[i] = data[i],data[data.index(min)]#找到最小值所在的位置后,进行交换位置。
    return data

import random
data_list = list(range(30))
#用于生成列表
random.shuffle(data_list)
#用于打乱列表
data_list
print("使用数据交换位置,从小到大排序",select_sort(data_list))    


print('='*40)

#选择排序
#从中依次选择出一个数据(进行比较),然后和其他数据进行比较,然后更换索引,或者直接交换数据本身

def select_sort(data):
    for i in range(len(data)-1):
        max = i
        for j in range(i+1,len(data)):
            if data[max] < data[j]:
                max = j
        data[i],data[max] = data[max],data[i]
    return data

import random
data_list = [i**3 for i in range(23)]
random.shuffle(data_list)
print("使用索引交换位置,从小到大排序",select_sort(data_list))

print('*'*40)

#选择排序
#来来交换数据的本身,从大到小排序

def select_sort(data):
    for i in range(len(data)-1):
        max = data[i]
        for j in range(i+1,len(data)):
            if max < data[j]:
                max = data[j]
        data[data.index(max)],data[i] = data[i],data[data.index(max)]
    return data

import random
data_list = [i**4 for i in range(20)]
random.shuffle(data_list)
print("使用数据交换位置,从小到大排序",select_sort(data_list))
#结果
'''
使用索引交换位置,从小到大排序 [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
****************************************
使用数据交换位置,从小到大排序 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29]
========================================
使用索引交换位置,从小到大排序 [10648, 9261, 8000, 6859, 5832, 4913, 4096, 3375, 2744, 2197, 1728, 1331, 1000, 729, 512, 343, 216, 125, 64, 27, 8, 1, 0]
****************************************
使用数据交换位置,从小到大排序 [130321, 104976, 83521, 65536, 50625, 38416, 28561, 20736, 14641, 10000, 6561, 4096, 2401, 1296, 625, 256, 81, 16, 1, 0]
'''

 

选择排序

时间效率O(n²)

原理:依次选出一个数据(作为初始数据),然后依次与其他数据进行比较,找出最小(最大)的数据,然后和初始数据交换位置。

#从中选出一个数据(作为最小数据),然后和其他的数据依次比较,如果有更小的数据,那么就一次比较。
def select_sort(data):
    for i in range(len(data)-1):#需要选择的次数
        min = i
        for j in range(i+1,len(data)):#用于找到最小值所在的位置
            if data[min] > data[j]:
                min = j
        data[min],data[i] = data[i],data[min]#找到最小值所在的位置后,进行交换位置。
    return data

import random
data_list=[i*i for i in range(10)]
random.shuffle(data_list)
print("使用索引交换位置,从小到大排序",select_sort(data_list))      


print('*'*40)

#选择排序
#从中选出一个数据(作为最小数据),然后和其他的数据依次比较,如果有更小的数据,那么就一次比较。
def select_sort(data):
    for i in range(len(data)-1):#需要选择的次数
        min = data[i]
        for j in range(i+1,len(data)):#用于找到最小值所在的位置
            if min > data[j]:
                min = data[j]        
        data[data.index(min)],data[i] = data[i],data[data.index(min)]#找到最小值所在的位置后,进行交换位置。
    return data

import random
data_list = list(range(30))
#用于生成列表
random.shuffle(data_list)
#用于打乱列表
data_list
print("使用数据交换位置,从小到大排序",select_sort(data_list))    


print('='*40)

#选择排序
#从中依次选择出一个数据(进行比较),然后和其他数据进行比较,然后更换索引,或者直接交换数据本身

def select_sort(data):
    for i in range(len(data)-1):
        max = i
        for j in range(i+1,len(data)):
            if data[max] < data[j]:
                max = j
        data[i],data[max] = data[max],data[i]
    return data

import random
data_list = [i**3 for i in range(23)]
random.shuffle(data_list)
print("使用索引交换位置,从小到大排序",select_sort(data_list))

print('*'*40)

#选择排序
#来来交换数据的本身,从大到小排序

def select_sort(data):
    for i in range(len(data)-1):
        max = data[i]
        for j in range(i+1,len(data)):
            if max < data[j]:
                max = data[j]
        data[data.index(max)],data[i] = data[i],data[data.index(max)]
    return data

import random
data_list = [i**4 for i in range(20)]
random.shuffle(data_list)
print("使用数据交换位置,从小到大排序",select_sort(data_list))
#结果
'''
使用索引交换位置,从小到大排序 [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
****************************************
使用数据交换位置,从小到大排序 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29]
========================================
使用索引交换位置,从小到大排序 [10648, 9261, 8000, 6859, 5832, 4913, 4096, 3375, 2744, 2197, 1728, 1331, 1000, 729, 512, 343, 216, 125, 64, 27, 8, 1, 0]
****************************************
使用数据交换位置,从小到大排序 [130321, 104976, 83521, 65536, 50625, 38416, 28561, 20736, 14641, 10000, 6561, 4096, 2401, 1296, 625, 256, 81, 16, 1, 0]
'''

 

标签:min,python,max,list,range,初步,算法,排序,data
来源: https://www.cnblogs.com/caomengqi/p/15100343.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有