>백엔드 개발 >파이썬 튜토리얼 >Python의 정렬 알고리즘 구현 방법 요약(코드)

Python의 정렬 알고리즘 구현 방법 요약(코드)

不言
不言원래의
2018-09-27 14:48:001894검색

이 기사는 Python의 정렬 알고리즘 구현 방법에 대한 요약(코드)을 제공합니다. 이는 특정 참조 가치가 있으므로 도움이 될 수 있습니다.

1. 삽입 정렬: 삽입 정렬의 기본 작업은 정렬된 데이터에 데이터를 삽입하여 숫자에 1을 더한 새로운 정렬 데이터를 얻는 것입니다. 이 알고리즘은 소량을 정렬하는 데 적합합니다. ; 먼저 첫 번째 것을 정렬된 것으로 처리한 다음 매번 마지막 것을 꺼내서 정렬합니다.

def insert_sort(ilist):
    for i in range(len(ilist)):
        for j in range(i):
            if ilist[i] < ilist[j]:
                ilist.insert(j, ilist.pop(i))
                break
    return ilist
 
ilist = insert_sort([4,5,6,7,3,2,6,9,8])
print ilist

2. 버블 정렬: 정렬할 시퀀스를 반복해서 방문하여 두 개를 비교합니다. 요소를 한 번에 하나씩, 순서가 잘못된 경우 교체하세요. 더 이상 교환이 필요하지 않을 때까지 배열을 방문하는 작업이 반복됩니다. 이는 배열이 정렬되었음을 의미합니다

def bubble_sort(blist):
    count = len(blist)
    for i in range(0, count):
        for j in range(i + 1, count):
            if blist[i] > blist[j]:
                blist[i], blist[j] = blist[j], blist[i]
    return blist
 
blist = bubble_sort([4,5,6,7,3,2,6,9,8])
print blist

3. 빠른 정렬: 한 번의 정렬 과정을 통해 정렬할 데이터를 두 개의 독립적인 부분으로 분할하고, 모든 한 부분의 데이터가 다른 부분의 모든 데이터보다 작으므로 이 방법을 사용하면 데이터의 두 부분을 각각 빠르게 정렬할 수 있으므로 전체 정렬 프로세스가 반복적으로 수행될 수 있으므로 전체 데이터가 정렬된 시퀀스가 ​​됩니다

def quick_sort(qlist):
    if qlist == []:
        return []
    else:
        qfirst = qlist[0]
        qless = quick_sort([l for l in qlist[1:] if l < qfirst])
        qmore = quick_sort([m for m in qlist[1:] if m >= qfirst])
        return qless + [qfirst] + qmore
 
qlist = quick_sort([4,5,6,7,3,2,6,9,8])
print qlist

4. 정렬 선택 : 1차로 정렬할 레코드 중 가장 작은 레코드를 선택하여 r1~r[n], 2차로 정렬할 레코드 중 가장 작은 레코드를 선택하여 r2~ r[n]에서 가장 작은 레코드를 선택하고 r2와 교환하는 식으로 i번째 패스 레코드 r[i]가 정렬됩니다. r[n]에서 가장 작은 레코드를 선택하여 r[i]와 교환하면 모든 정렬이 완료될 때까지 순서가 계속 증가합니다

def select_sort(slist):
    for i in range(len(slist)):
        x = i
        for j in range(i, len(slist)):
            if slist[j] < slist[x]:
                x = j
        slist[i], slist[x] = slist[x], slist[i]
    return slist
 
slist = select_sort([4,5,6,7,3,2,6,9,8])
print slist

5. 이진 검색: 주로 2로 나누어 검색합니다.

#!/usr/bin/python
# -*- coding: utf-8 -*-
#二分查找,用于在较大的数据列表中查询某个值,考虑到元素比较多,单纯的遍历会造成内存压力过大,考虑使用二分查找
#二分查找的关键在于查询中间值,将需要查找的值与中间值进行比较,然后确定查找方向
def binary_search(data_source,find_n):
    #取中位数
    mid=int(len(data_source)/2)

    if len(data_source)>=1:
        if data_source[mid]>find_n:  #中位数大于要查找的数,则要查找的数在左半部分,继续调用二分算法进行查找
            binary_search(data_source[:mid],find_n)
        elif data_source[mid]<find_n:  #中位数小于要查找的数,则要查找的数在右半部分
            binary_search(data_source[mid:],find_n)
        else:   #中位数等于要查找的数
            print("找到了:",data_source[mid])

    else:
        print("没有找到")


if __name__=="__main__":
    data=list(range(3,1600))
    binary_search(data,400)

위 내용은 Python의 정렬 알고리즘 구현 방법 요약(코드)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.