Python排序算法练习(附本人自己设计的一种排序方法)

Python排序算法练习(附本人自己设计的一种排序方法)

在做排序算法练习时,感觉就是找如何让数据移动次数最少的方法。以下是代码:

def select_sort(nums):
    """这个是原地排序"""
    for i in range(len(nums),0,-1):
        m = nums[0]
        p = 0
        for j in range(1,i):
            if nums[j]>m:
                m = nums[j]
                p = j
        nums[i-1],nums[p] = nums[p],nums[i-1]



def insert_sort(nums):
    """这个不是原地排序"""
    t = [nums[0]]
    for i in range(1,len(nums)):
        for j in range(len(t)):     # 找位置
            if nums[i]<=t[j]:
                t.insert(j,nums[i])
                break
        else:
             t.append(nums[i]) 
        
    return t
         
def shell_sort(nums):
    for gap in range(len(nums)//2,0,-1):
        start = 0
        while start+gapnums[start + gap]:
                 nums[start],nums[start + gap] = nums[start + gap],nums[start]
            start += gap
             
    return insert_sort(nums)


def mid_sort(nums):
    """本人自己设计的排序方法
       mid表示中间的一个数据的索引号
       mid左边的一个数和mid要身开始做为右边的一个数,进行比较,
       如果左边的数更大,则交换,(默认从小到大排序)
       一直到left或者right超出范围,再把mid增加1,这样就进行了一轮比较了。
       这个时候,可能还有没有排好序的数据,再把mid设为1从新开始,直到没有任何一次交换数据,
       则整个数据排序结束。
    """
    while True:
        flag = False
        mid = 1          
        while mid=0 and right		
李兴球

李兴球的博客是Python创意编程原创博客