일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 텍스트 파일 읽기
- C언어 메모리
- Spring email
- C언어 함수
- Oracle
- C언어 배열
- URL 다운로드
- 역순
- 포인터
- SQL
- placehoder
- 자바
- C언어 변수
- GUI
- 구글 reCaptcha
- jsp
- java
- C언어 매크로
- 날짜
- Google reCaptcha
- Naver SmartEditor
- 오라클
- Vim
- TCP/IP 소켓
- C언어 구조체
- C언어
- Spring google
- gcc
- C언어 파일입출력
- HTML5
- Today
- Total
easy software
C언어 Bubble Sort(버블정렬) 예제 본문
이번 시간에는 Bubble Sort(버블정렬)을 해보도록 하겠습니다.
버블정렬을 혹시 모르시는 분이 계실 수 있으니, 간단하게 개념을 집고 넘어가겠습니다.
위의 사진을 예로들어서 설명하겠습니다.
정렬이란 단어를 모르는 분은 없을거라 믿습니다만, 혹시 모를수도 있으니 간단히 설명드리겠습니다.
값이 4 3 5 1 2 가 있습니다.
위의 값을 오름차순(ascending order)정렬한다면, 1 2 3 4 5 가 될 것이고
내림차순(descending order)정렬한다면, 5 4 3 2 1 이 될 것입니다.
버블정렬이란, 정렬되는 과정이 마치 거품이 일어나는 모습과 유사해서 붙어진 이름입니다.
위의 그림은, 버블정렬을 오름차순으로 하는 그림인데
step1에서 -2와 45를 비교합니다.
45가 더 크니, 각자 자리를 고수합니다.
그 이후에 45와 0을 비교합니다.
이번엔 45가 더큰데 0보다 앞에있죠?
그렇기 때문에 서로 자리를 바꿔줍니다.
이렇게 오름차순으로 버블정렬을 할 때에는, 하나하나씩 크기를 비교하면서 정렬을 해나갑니다.
step1의 정렬이 종료되면, 다시 한번 더 버블정렬을 진행해줍니다.
이런식으로 총 5개의 값을 비교해야 할 때에는 4번의 반복과정을 거치게 됩니다.
값이 6개면 5번의 반복과정을 거치게 되겠지요.
여기서 문제입니다.
오름차순이 아닌 내림차순으로 버블정렬을 해보겠습니다.
1. 길이가 7인 배열을 선언합니다.
2. 사용자로부터 7개의 정수를 입력받아 배열에 저장합니다.
3. 버블정렬을 수행하는 함수를 구현하고, 버블정렬을 합니다.
4. 버블정렬된 값을 출력합니다.
아래코드를 보시죠.
#include <stdio.h>
void DesSort(int* ptr){
int temp;//배열의 값을 저장할 임시변수
for (int i = 0; i < 6; i++)//배열의 크기인7이 아닌 6만큼 반복함
for (int j = 0; j < 6 - i; j++){
if (ptr[j] < ptr[j + 1]){
temp = ptr[j + 1];
ptr[j + 1] = ptr[j];
ptr[j] = temp;
}
}
}
int main(void){
int input;
int arr[7];
//사용자로부터 7개의 정수를 입력받음
for (int i = 0; i < 7; i++){
printf("?: ");
scanf_s("%d", &input);
arr[i] = input;
}
DesSort(arr); //배열을 내림차순정렬하기 위해 함수 호출
for (int i = 0; i < 7; i++)
printf("%d ", arr[i]);
return 0;
}
'C언어 > 포인터와 배열' 카테고리의 다른 글
C언어 2차원 배열을 이용한 구구단 저장/출력 (0) | 2015.01.25 |
---|---|
C언어 2차원배열을 1차원으로 구현해보자 (0) | 2015.01.25 |
C언어 포인터와 배열을 이용한 회문검사 프로그램 (0) | 2015.01.23 |
C언어 배열을 이용한 예제(홀수면 앞부터, 짝수면 뒤부터 저장) (0) | 2015.01.23 |
C언어 배열을 이용하여 10진수를 2진수로 변환하기 (0) | 2015.01.23 |