싱글 체인 시트 의 거품 정렬
4238 단어 데이터 구조c 언어싱글 체인 시트 의 거품 정렬
4. 567917. 정렬 을 시작 하기 전에 단일 체인 표를 한 번 옮 겨 다 니 며 tail 을 끝 점 의 지침 역, 즉 NULL 을 가리킨다.cur 와 p 는 모두 머리 결점 을 가리킨다
4. 567917. cur - > data 와 cur - > next - > data 의 크기 를 비교 하고 전자 가 후자 보다 크 면 교환 합 니 다.그렇지 않 으 면 교환 하지 않 습 니 다. 이후 cur 지침 을 오른쪽으로 이동 하여 cur - > data 와 cur - > next - > data 의 크기 를 cur - > next = = tail 까지 계속 비교 합 니 다
4. 567917. 한 번 순환 한 후에 tail 을 cur 의 위 치 를 가리 키 는데 이것 은 tail 이 앞으로 이동 하 는 것 과 같다.cur 를 다시 머리 결점 을 가리 키 고 2 단 계 를 반복 합 니 다
p - > next = = tail 까지 전체 순환 을 끝 냅 니 다
거품 에 의 해 정렬 되 어야 하 는 링크 가 반드시 무질서 하지 않 기 때문에 s 소량의 몇 번 순환 을 거 친 후에 질서 가 있 을 수 있 고 대량의 순환 을 거치 지 않 아 도 되 기 때문에 순환 횟수 를 줄 이기 위해 변 수 를 설정 합 니 다. flag 의 초기 값 은 0 입 니 다. 만약 에 특정한 순환 에서 요소 와 요소 간 의 교환 이 있 으 면 flag 는 1 로 변 합 니 다. 만약 에 요소 의 교환 이 없 으 면이번 순환 싱글 체인 표 가 질서 가 있 음 을 증명 합 니 다. flag 는 변 하지 않 고 0 입 니 다.한 번 의 순환 을 거치 지 않 고 flag 의 크기 가 0 인지 아 닌 지 를 판단 합 니 다. 0 이면 전체 순환 을 뛰 어 넘 습 니 다.
#define DataType int
typedef struct Node{
DataType data;
struct Node* next;
}linklist;
void LinkListBubblesort(linklist *head)
{
linklist *cur = head;
linklist *tail = head;
linklist *p = head;
DataType node = 0;
int length = 0;
int flag = 0;
// ,tail
while (tail != NULL)
{
tail = tail->next;
}
// , -1
while (p->next!=tail)
{
flag = 0;
cur = head;
while (cur->next != tail)
{
if (cur->data > cur->next->data)
{
//
node = cur->data;
cur->data = cur->next->data;
cur->next->data = node;
flag = 1;
}
cur = cur->next;
}
//
tail = cur;
// 1,
if (flag == 0)
{
return;
}
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
정수 반전Udemy 에서 공부 한 것을 중얼거린다 Chapter3【Integer Reversal】 (예) 문자열로 숫자를 반전 (toString, split, reverse, join) 인수의 수치 (n)가 0보다 위 또는 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.