13 버블 정렬, 칵테일 정렬

버블 정렬: 이웃한 두 요소의 비교, 교환을 반복해 정렬

패스(Pass): 비교, 교환 작업

버블 정렬 구현

교환 횟수는 비교 횟수 = (n - 1) + (n - 2) + 1 = n(n - 1) / 2 의 절반인 n(n - 1) / 4

swap 함수 안에서 값의 이동이 3회 발생하므로 평균 3n(n - 1) / 4

버블 정렬 개선안(1)

버블 정렬 개선안(2)

칵테일 정렬

이 배열은 맨 앞 요소(9) 때문에 빠른 시간 안에 정렬 작업을 마칠 수 없다. 

그래서 패스의 방향을 교대로 바꾸는 방식(칵테일 정렬)을 사용한다.

/*--- 양방향 버블 정렬(칵테일 셰이커 정렬) ---*/
void shaker(int a[], int n)
{
	int left = 0;
	int right = n - 1;
	int last = right;

	while (left < right) {
		int j;
		for (j = right; j > left; j--) {
			if (a[j - 1] > a[j]) {
				swap(int, a[j - 1], a[j]);
				last = j;
			}
		}
		left = last;

		for (j = left; j < right; j++) {
			if (a[j] > a[j + 1]) {
				swap(int, a[j], a[j + 1]);
				last = j;
			}
		}
		right = last;
	}
}

버블 정렬(좌), 칵테일 정렬(우)

댓글

공지사항
업데이트
인기 글
최근댓글
태그
실제 인터넷 속도 socket programming m1 매직 키보드 ubuntu MariaDB Connector return 0 성공 이유 fputc( ) 2진수 실수 표현 리턴 0 이유 C2027 정의되지 않은 형식 'timespec' 윈도우 timespecs 네이버 제휴 통장 적립 m1 윈도우 단축키 스트림과 버퍼 오류 C2011 'timespec': 'struct' 형식 재정의 우분투 디스코드 이진수 음수표현 리틀 엔디안과 빅 엔디안 if 코드 구조 포인터와 참조 c# 클래스 네이퍼 적립 계산 윈도우 db 우분투 독 에러 실제 저장 용량 우분투 독 비활성화 if(0) 알고리즘이란 스트림 버퍼 2진법과 서수 네이버 제휴 카드 적립 if 가독성 c 알고리즘 네이버 페이 결제 빅엔디안 윤성우의 열렬 TCP/IP 소켓 프로그래밍 Visual Studio에서 inet_ntoa( ) 경고 M1 독 바로 보기 c언어 버퍼 C++ connector fgets( ) 개행('\0')과 NULL 처리 A2449 Apple Silicon Mac용 터치아이디 탑재형 매직 키보드 - 미국 영어 (MK293KE/A) m1 Shift space littem endian m1 페러렐즈 윈도우 맥 단축키 stream buffer fputs( ) 네이버 포인트 적립 계산 #define HAVE_STRUCT_TIMESPEC 맥 독 반응 속도 socket networking mariadb 삭제 db 방화벽 소켓 M1 Parallels Ubuntu QT 인터넷 속도 단위 pointer reference 네이버 맴버쉽 계산 몬트레이 한영 전환 puts( ) 이진수 실수표현 2진수와 Byte socket MK293KE/A C networking m1 페러렐즈 단축키 네이버 맴버쉽 적립 몬트레이 Shift Space M1 dock speed 효과적인 if 코드 맥북 독 반응 M1 Parallels Ubuntu QT install MariaDB Connector/C++ M1 dock C# 메서드 2진수 음수 표현 MK293KH/A if(false) mariadb 재설치 우분투 qt 네이버 적립 mariadb 외부접속 독 속도 조절 connect() mysql 방화벽 고정 소수점 표준 입출력 스트림 mysql 외부 Ip Magic Keyboard with Touch ID How to show/hide the macOS Dock instantly 2진법과 기수 db 외부접속 window mysql 버퍼란 c언어 스트림 listen() mariaDB 외부 접속 MariaDB 방화벽 io stream
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31