정렬 2 분 거품 찾기 정렬 선택 정렬 삽입 정렬 힐 정렬 빠 른 정렬
질서 있 는 집합 에 기반 한 검색 이 분명 합 니 다.
def find(alist,item):
find = False
first = 0
mid_index = 0
last = len(alist)-1
while first <= last:
mid_index = (last + first)//2
if alist[mid_index] < item:
# ,
first = mid_index + 1
elif alist[mid_index] > item:
last = mid_index - 1
else:
find = True
break
return find
alist = [1,3,4,5,7,9,10]
print(find(alist,6))
거품 정렬
사상: 서열 중의 두 개 를 비교 하고 순서대로 위 치 를 교환 하 며 순환 하여 질서 있 는 서열 을 얻 을 수 있다.
def sort(alist):
for j in range(len(alist)-1):
for i in range(len(alist)-j-1):
if alist[i] > alist[i+1]:
alist[i],alist[i+1] = alist[i+1],alist[i]
return alist
alist = [3,6,5,8,4]
print(sort(alist))
정렬 선택
사상: 먼저 하나의 최대 치 요소 의 아래 표 시 를 0 으로 가정 하고 이 요 소 를 다른 요소 와 비교 하 며 작 으 면 아래 표 시 를 대응 하 는 요소 의 아래 표 로 바 꿀 수 있다. 마지막 으로 최대 요소 의 진실 한 아래 표 시 를 얻어 마지막 요소 와 교환 할 수 있다. 두 번 째 는 상기 순환 을 계속 하여 두 번 째 요소 의 아래 표 시 를 얻어 마지막 두 번 째 요소 와 교환 할 수 있다.질서 있 는 서열 이 나 올 때 까지 n 회 순환
def sort(alist):
for j in range(0,len(alist)-1):
max_index = 0 #
for i in range(1,len(alist)-j):
if alist[max_index] < alist[i]:
max_index = i
alist[len(alist)-1-j],alist[max_index] = alist[max_index],alist[len(alist)-j-1]
return alist
alist = [3,6,5,8,4]
print(sort(alist))
삽입 정렬
사상: 하나의 서열 을 두 개의 부분 집합 으로 나 누 었 다. (나 누 는 것 이 아니 라 두 개의 부분 집합 으로 만 보 았 다. 왼쪽 은 질서 있 는 부분 집합 이 고 오른쪽 은 무질서 한 부분 집합 이다) 먼저 원래 서열 의 첫 번 째 수 를 질서 있 는 부분 집합 으로 하고 뒤의 요 소 는 무질서 한 부분 집합 으로 하 며 무질서 한 부분 에서 하나의 요 소 를 집중 적 으로 꺼 내 질서 있 는 부분 집합 의 마지막 요소 와 비교 했다.크 면 질서 있 는 부분 집합 마지막 요소 의 오른쪽 에 놓 고 작 으 면 마지막 엄숙 한 교환 위치 와 비교 한 다음 에 앞의 요소 와 비교 하여 성공 적 으로 삽입 할 때 까지 순환 한 다음 에 어 지 러 운 부분 집중 요 소 를 상기 절 차 를 점차적으로 순환 시 켜 질서 있 는 목록 을 삽입 하고 len (alist) - 1 회 순환 하면 된다.
def sort(alist):
# ,
for i in range(1,len(alist)):
while i > 0:
# alist[i]
# alist[i-1]
if alist[i] < alist[i-1]:
#
alist[i],alist[i-1] = alist[i-1],alist[i]
i -= 1
else:
break
return alist
alist = [3,4,8,6,2]
print(sort(alist))
힐 정렬
gap: 증분 의 값 을 마지막 으로 나 눈 그룹 수
삽입 정렬 은 증 량 이 1 인 힐 정렬 입 니 다.
사상: 먼저 gap (gap = len (alist) / / 2) 를 얻어 야 한다. 모두 주관적 으로 gap 그룹 으로 나 누 어 각 그룹 에 대해 순 서 를 삽입 한 다음 에 gap (gap = gap / / 2) 를 얻어 그룹 을 나 누 어 순 서 를 삽입 할 수 있다. gap = 1 시 까지 마지막 으로 전체 그룹 에 순 서 를 삽입 하면 질서 있 는 순 서 를 얻 을 수 있다.
def sort(alist):
gap = len(alist)//2
# ,
while gap >= 1:
for i in range(gap,len(alist)):
while i > 0:
# alist[i]
# alist[i-1]
if alist[i] < alist[i-gap]:
#
alist[i],alist[i-gap] = alist[i-gap],alist[i]
i -= gap
else:
break
gap = gap // 2
return alist
alist = [3,4,8,6,2]
print(sort(alist))
빠 른 정렬
기수 지정 (난서 의 첫 번 째 데이터 값)
기수 보다 작은 데 이 터 를 기수 왼쪽 에 놓 고 기수 보다 큰 데 이 터 를 기수 오른쪽 에 놓 습 니 다.
사상: 목록 의 첫 번 째 요 소 를 기준 숫자 로 설정 하고 mid 변수 에 값 을 부여 한 다음 에 전체 목록 에서 기준 보다 작은 것 을 기준 왼쪽 에 놓 고 기준 보다 큰 것 을 기준 오른쪽 에 놓 은 다음 에 기준 숫자 좌우 양쪽 의 서열 을 이 방법 에 따라 배출 합 니 다.
두 개의 지침 을 정의 합 니 다. low 는 가장 왼쪽 을 가리 키 고 high 는 가장 오른쪽 을 가리 키 며 가장 오른쪽 지침 을 왼쪽으로 이동 합 니 다. 법칙 은 지침 이 가리 키 는 수치 가 기준 보다 작 으 면 지침 위치의 숫자 를 기준 디지털 의 원시 위치 로 이동 합 니 다. 그렇지 않 으 면 지침 을 계속 이동 합 니 다. 만약 에 가장 오른쪽 지침 이 가리 키 는 수치 가 기준 위치 로 이동 하면맨 왼쪽 포인 터 를 이동 하여 오른쪽으로 이동 합 니 다. 이 포인 터 가 가리 키 는 수치 가 기준 수치 보다 크 면 이 수 치 를 맨 오른쪽 포인 터 가 가리 키 는 위치 로 이동 한 다음 이동 을 중단 합 니 다.
좌우 사 이 드 포인터 가 중복 되면 기준 을 포인터 가 중복 되 는 위치 에 넣 으 면 기준 왼쪽 은 기준 보다 작은 수 이 고 오른쪽 은 기준 보다 큰 수 이다.
def sort(alist,start,end):
low = start
high = end
if low > high:
return
#
mid = alist[start]
while low < high:
# high
while low < high:
if alist[high] > mid:
high -= 1
else:
alist[low] = alist[high]
break
# low
while low < high:
if alist[low] < mid:
low += 1
else:
alist[high] = alist[low]
break
if low == high:
alist[low] = mid
break
sort(alist,start,high - 1)
sort(alist,low+1,end)
return alist
alist = [6,1,2,7,9,3,4,5,10,8]
print(sort(alist,0,len(alist)-1))
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
정렬 의 힐 정렬 삽입데이터 구조 와 알고리즘 분석 실행 후 결 과 는: 분할 간격 이 1 일 때 정렬 을 직접 삽입 합 니 다....
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.