>  기사  >  백엔드 개발  >  Python 목록 정렬 방법은 무엇입니까?

Python 목록 정렬 방법은 무엇입니까?

coldplay.xixi
coldplay.xixi원래의
2020-09-11 13:34:5723007검색

Python 목록 정렬: 1. 버블 정렬은 정렬할 시퀀스를 반복적으로 탐색하고 한 번에 두 요소를 비교한 후 순서가 잘못된 경우 교체합니다. 2. 삽입 정렬 정렬된 순서, 정렬되지 않은 데이터의 경우 정렬된 순서의 뒤에서 앞으로 스캔하여 해당 위치를 찾아서 삽입합니다.

Python 목록 정렬 방법은 무엇입니까?

관련 학습 권장사항: python tutorial

1. 버블 정렬

버블 정렬(Bubble Sort)은 간단한 정렬 알고리즘입니다. 정렬할 배열을 반복적으로 반복하여 한 번에 두 요소를 비교하고 순서가 잘못된 경우 교체합니다. 더 이상 교환이 필요하지 않을 때까지 배열을 순회하는 작업이 반복됩니다. 이는 배열이 정렬되었음을 의미합니다. 이 알고리즘의 이름은 작은 요소가 스와핑을 통해 배열의 맨 위로 천천히 "부동"된다는 사실에서 유래되었습니다.

Python 목록 정렬 방법은 무엇입니까?

def bubble_sort(list):
    n = len(list)
    for i in range(n - 1):
        for j in range( 0,n - 1 - i):
            if list[j] > list[j + 1]:
                list[j], list[j + 1] = list[j + 1], list[j]
        # if list[i] > list[i + 1]:
        #     list[i], list[i + 1] = list[i + 1], list[i]
    print(list)
list=[2,4,6,8,1,3,5,7,9]
bubble_sort(list)
#结果:[1,2,3,4,5,6,7,8,9]

2. 삽입 정렬

삽입 정렬은 간단하고 직관적인 정렬 알고리즘입니다. 정렬되지 않은 데이터의 경우 정렬된 시퀀스의 뒤에서 앞으로 스캔하여 해당 위치를 찾아 삽입합니다. 삽입 정렬의 구현에서는 뒤에서 앞으로 스캔하는 동안 정렬된 요소를 점차적으로 뒤로 이동하여 최신 요소에 대한 삽입 공간을 제공해야 합니다.

Python 목록 정렬 방법은 무엇입니까?

def insertion_sort(list):
  n = len(list)
  for i in range(1, n):
    for j in range(i, 0, -1):
      if list[j] < list[j - 1]:
        list[j], list[j - 1] = list[j - 1], list[j]
      else:
        break
  print(list)
insertion_sort([3,0,2,5,8,5,9,41,0,1,6])
#结果:[0, 0, 1, 2, 3, 5, 5, 6, 8, 9, 41]

3. 선택 정렬

선택 정렬은 간단하고 직관적인 정렬 알고리즘입니다. 작동 원리는 다음과 같습니다. 먼저 정렬되지 않은 시퀀스에서 가장 작은(큰) 요소를 찾고, 이를 정렬된 시퀀스의 시작 위치에 저장한 다음, 정렬되지 않은 나머지 요소에서 가장 작은(큰) 요소를 계속해서 찾습니다. 정렬된 순서의 마지막에 배치됩니다. 모든 요소가 정렬될 때까지 계속됩니다.

def selection_sort(list):
    n = len(list)
    for i in range(0, n -1):
        min_index = i
        for j in range(i + 1, n):
            if list[min_index] > list[j]:
                min_index = j
        if i != min_index:
            list[min_index], list[i] = list[i], list[min_index]
    print(list)
selection_sort([5,9,6,42,9,4,66,2,3,0,1])
#结果:0, 1, 2, 3, 4, 5, 6, 9, 9, 42, 66]

요약:

import random
# 随机生成1-1000之间无序序列整数数据
def generator():
    random_data = []
    for i in range( 0, 10 ):
        random_data.append( random.randint( 1, 1000 ) )
    return random_data
# 冒泡排序
def bubble_sort(list):
    # 序列长度
    n = len( list )
    for i in range( 0, n ):
        for j in range( i , n ):
            if list[i] > list[j]:
                list[i], list[j] = list[j], list[i]
    return list
 # 选择排序
def selection_sort(list):
    n = len(list)
    for i in range(0, n -1):
        min_index = i
        for j in range(i + 1, n):
            if list[min_index] > list[j]:
                min_index = j
        if i != min_index:
            list[min_index], list[i] = list[i], list[min_index]
    return list
#插入排序
def insertion_sort(list):
  n = len(list)
  for i in range(1, n):
    for j in range(i, 0, -1):
      if list[j] < list[j - 1]:
        list[j], list[j - 1] = list[j - 1], list[j]
      else:
        break
  return list
if __name__ == "__main__":
    # 生成随机无序数据
    list = generator()
    # 打印无序数据
    print( &#39;随机生成的无序数据:&#39;,list )
    # 冒泡排序
    sorted_data = bubble_sort( list )
    #插入排序
    insertion_data=insertion_sort(list)
    #选择排序
    selection_data=selection_sort( list )
    # 打印排序结果
    print( &#39;冒泡排序:&#39;,sorted_data )
    print( &#39;插入排序:&#39;, insertion_data )
    print( &#39;选择排序:&#39;, selection_data )
&#39;&#39;&#39;
结果:
随机生成的无序数据: [300, 517, 591, 209, 204, 789, 417, 739, 803, 393]
冒泡排序: [204, 209, 300, 393, 417, 517, 591, 739, 789, 803]
插入排序: [204, 209, 300, 393, 417, 517, 591, 739, 789, 803]
选择排序: [204, 209, 300, 393, 417, 517, 591, 739, 789, 803]
&#39;&#39;&#39;

프로그래밍 학습에 대해 더 알고 싶다면 php training 칼럼에 주목해주세요!

위 내용은 Python 목록 정렬 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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