이 기사는 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!