6 commonly used sorting algorithms (Python)

1. Bubble sort

a = [10,9,8,7,6,5,4,3,2,1]
for i in range(len(a)-1):
    for j in range(len(a)-1-i):
        if( a[j] > a[j+1] ):
            temp = a[j]
            a[j] = a[j + 1]
            a[j + 1] = temp
print("排序后的列表为", a)

2. Select Sort

a = [10,9,8,7,6,5,4,3,2,1]
for i in range(len(a)-1):
    for j in range(i+1, len(a)):
        if( a[i] > a[j] ):
            temp = a[i]
            a[i] = a[j]
            a[j] = temp
print("排序后的列表为", a)

3. Sort by selection method

a = [10,9,8,7,6,5,4,3,2,1]
for i in range(1, len(a)):
    wait = a[i]
    j = i - 1
    while j>=0:
        if( a[j] > wait ):
            a[j+1] = a[j]
        else:break;
        j = j - 1
    a[j+1] = wait
print("排序后的列表为", a) 

4. Sort by half method

a = [10,9,8,7,6,5,4,3,2,1]
for i in range(1, len(a)):
    wait = a[i]
    low = 0
    high = i - 1
    while( low <= high ):
        mid = (low + high) // 2
        if( wait < a[mid] ):
            high = mid - 1
        else:
            how = mid + 1
    j = i - 1
    while( j > high ):
        a[j +1] = a[j]
        j = j - 1
    a[high + 1] = wait

print("排序后的列表为", a) 

5. Hill sort

a = [10,9,8,7,6,5,4,3,2,1]
step = len(a) // 2
while ( step > 0 ):
    for i in range(0+step, len(a), step):
        wait = a[i]
        j = i - 1
        while( j >= 0 ):
            if( a[j] > wait ):
                a[j + 1] = a[j]
            else:break
            j = j - 1
        a[ j + 1 ] = wait            
    step //= 2   
print("排序后的列表为", a) 

6. Bucket sorting

a = [10,9,8,7,6,5,4,3,2,1,20]
b = []
bucket = []
for i in range(max(a)+1):
    bucket.append(0)
for j in range(len(a)):
    bucket[a[j]] += 1
for k in range(max(a), 0,-1):
    for l in range(bucket[k], 0, -1):
        b.append(k)
print("排序后的列表为", b) 

Guess you like

Origin blog.csdn.net/weixin_45773503/article/details/105432876