Link
Notice
Recent Posts
Recent Comments
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 쌍대성원리
- 2023채용박람회
- 허스켈그래프
- 그래프2
- 이분그래프
- 정보처리기사공부방법
- 아이엔이야기
- 오블완
- wxmaxima
- 최단경로문제
- 배윤슬
- 윤파고
- 합의정리
- 오일러투어
- 무소의뿔
- wxMaxima install for mac os
- 등록금0원
- 맥북에서 wxMaxima 설치
- 집착형
- 숫타니파아타
- 나르시스트
- 직선의방정식
- playground배열
- 이런 사람에게 "절대" 돈과 시간 쓰지 마세요. (이헌주 교수 3부)
- kgol
- 다자녀장학금
- 제거된값 첨부하기
- 티스토리챌린지
- 청년도배사 이야기
- 데이터베이스시스템
Archives
- Today
- Total
사적공간
개선된 버블정렬 본문
버블정렬은 끝값부터 정렬한다.(매 회차마다 정렬된 값을 제외하고)
매 회차마다 처음부터 끝까지 이웃한 값을 비교하여 정렬하는데, 한번이라도 정렬이 일어나면 sw = 1,아니면 0임.
0이면 모든 배열의 정렬이 완료되었으므로 break;
/* 개선된 버블정렬 */
#include<stdio.h>
main()
{
int n,i,j,sw,cnt,k;
int data[5];
n = -1;
do{
n++;
scanf("%d", &data[n]);
}while(n < 4);
cnt = 0;
for(i=1;i<=4;i++){ // 5개의 원소가 저장되어 있으므로 네 번 비교
sw = 0; // 이전 회차에서 비교가 일어났는지 표시하는 값 1이면 한 번이상 비교 일어남 0이면 없음.
for(j=0;j<=(4-i);j++){
if(data[j]>data[j+1])
{
k=data[j];
data[j]=data[j+1];
data[j+1]=k;
cnt++; // 교환횟수 누적
sw=1;
}
}
if(sw == 0) // 비교가 한 번도 일어나지 않았으므로 배열의 원소는 완전히 정렬되었으므로 반복문 탈출
break;
}
printf("버블정렬 배열원소 교환횟수: %d\n",cnt);
for(int x=0;x<=4;x++)
printf("%d",data[x]);
}
6
9
2
3
4
버블정렬 배열원소 교환횟수: 6
23469