python实现冒泡,快排,选择和插入排序

举报
泽宇-Li 发表于 2020/10/16 08:55:20 2020/10/16
【摘要】 1.冒泡排序def my_sort(array): flag=1 for i in range(len(array)): if(flag==1): flag=0 for j in range(len(array)-i-1): if(array[j]>array[j+1]): ...

1.冒泡排序

def my_sort(array):
    flag=1
    for i in range(len(array)):
        if(flag==1):
            flag=0
            for j in range(len(array)-i-1):
                if(array[j]>array[j+1]):
                    temp=array[j]
                    array[j]=array[j+1]
                    array[j+1]=temp
                    flag=1
        else:
            break
    return array

2.选择排序

 

def quick_sort(low,high,array):
    solder=array[low]
    while(low<high):
        if(array[high]<solder):
            array[low]=array[high]
            low+=1
            while(low<high):
                if(array[low]>solder):
                    array[high]=array[low]
                    high-=1
                    break
                else:
                    low+=1
        else:
            high-=1
    array[high]=solder
    return array,high

def recursion(array,low,high):
    if low<high:
        array,middle=quick_sort(low,high,array)
        recursion(array,low,middle-1)
        recursion(array,middle+1,high)
    print(array)

 

3.选择排序

#选择排序
def chocice_sort(array):
    #由于array不支持index,将其转为list来做
    array=list(array)
    for i in range(len(array)):
        try:
            data=None
            data=array[i:]
            print(type(data))
            index=array.index(min(data))
            temp=array[i]
            array[i]=array[index]
            array[index]=temp
        #print(array)
        except:
            pass
        continue
    print(array)
 

4.插入排序

#直接插入排序
def dir_sort(array):
    for i in range(1,len(array)):
        temp=array[i]
        for j in range(i-1,-1,-1):
            print(array)
            if (array[j]>temp)&(j==0):
                array[1]=array[0]
                array[0]=temp
                break
            if (array[j]>temp)&(j!=0):
                array[j+1]=array[j]
                continue
            if(array[j]<temp):
                array[j+1]=temp
                break       
            #print(array)

#调用

data=np.array([0]*10)
for i in range(10):
    data[i]=random.randint(1,100)
#print(data)
#print(len(data.shape))
#data=recursion(data,0,9)
#chocice_sort(data)
dir_sort(data)

1
<br style = "">


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。