>  기사  >  백엔드 개발  >  Python 빠른 정렬, 삽입 정렬 알고리즘, 사용자 정의 정렬 예제에 대한 자세한 설명

Python 빠른 정렬, 삽입 정렬 알고리즘, 사용자 정의 정렬 예제에 대한 자세한 설명

伊谢尔伦
伊谢尔伦원래의
2017-06-28 13:54:531772검색

이 글에서는 Python빠른 정렬 및 삽입 정렬 알고리즘의 구현과 사용자 정의 정렬의 예를 주로 소개합니다. 사용자 정의 정렬은 Python의 정렬 및 정렬 기능을 사용합니다. 퀵 정렬

Quicksort는 Python의 정렬 및 정렬 기능을 사용합니다. 버블 정렬

이 개선되었습니다. 1962년 C. A. R. Hoare가 제안했습니다. 기본 아이디어는 한 번의 정렬을 통해 정렬할 데이터를 두 개의 독립적인 부분으로 나눈 다음, 이 방법을 사용하여 데이터의 두 부분을 빠르게 분리하는 것입니다. . 정렬은 전체 정렬 프로세스를

재귀적으로 수행하여 전체 데이터가 정렬된 시퀀스가 ​​되도록 할 수 있습니다. 빠른 정렬, 재귀적 구현

def quick_sort(num_list):
  """
  快速排序
  """
  if num_list == []:
    return num_list
  smallList = []
  bigList = []
  middleElement = num_list[0]
  for i in num_list[1:]:
    if i <= middleElement:
      smallList.append(i)
    else:
      bigList.append(i)
  return quick_sort(smallList)+[middleElement]+quick_sort(bigList)

2. 삽입 정렬

삽입 정렬의 알고리즘 설명은 간단하고 직관적인 정렬 알고리즘입니다. 정렬되지 않은 데이터의 경우 정렬된 시퀀스의 뒤에서 앞으로 스캔하여 해당 위치를 찾아 삽입합니다. 삽입 정렬의 구현에서는 일반적으로 내부 정렬(즉, O(1) 여분의 공간만 사용하는 정렬)이 사용됩니다. 따라서 스캔 과정에서 뒤에서 앞으로 반복적이고 점진적으로 이동해야 합니다. 요소를 뒤로 정렬하여 최신 요소에 대한 삽입 공간을 제공합니다.

 삽입 정렬

def insert_sort(num_list):
  """
  插入排序
  """
  for i in range(len(num_list)-1):
    for j in range(i+1, len(num_list)):
      if num_list[i]>num_list[j]:
        num_list[i],num_list[j] = num_list[j],num_list[i]
  return num_list

3. 사용자 정의 정렬

이를 달성하려면 sort() 또는 sorted() 키를 사용하세요.
예시는 다음과 같습니다:

def sort_key(obj):
  sorted_list = [4, 2, 5, 9, 7, 8, 1, 3, 6, 0]
  return sorted_list.index(obj)
 
 
if name == &#39;main&#39;:
  print sorted(range(10), key=sort_key)
 
# 输出结果如下
[4, 2, 5, 9, 7, 8, 1, 3, 6, 0]

# 목록에서 키워드의

index

위치를 사용하여 사용자 정의 정렬을 수행합니다

위 내용은 Python 빠른 정렬, 삽입 정렬 알고리즘, 사용자 정의 정렬 예제에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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