/*
* http://sosal.tistory.com/
* made by so_Sal
*/
거품정렬입니다.
[][][][][][][][] <-- 여기서 최대값을 가장 오른쪽으로
[][][][][][][]■ <-- 최대값 하나를 찾아으니, 나머지 중 최대값을 가장 오른쪽으로
[][][][][][]■ ■ <-- 이런식으로 하나씩 하나씩 최대값을 오른쪽으로 옮기는것
[][][][][]■ ■ ■
[][][][]■ ■ ■ ■
[][][]■ ■ ■ ■ ■
[][]■ ■ ■ ■ ■ ■ <-- 2개밖에 남질 않았습니다. 높은것을 오른쪽으로..
[]■ ■ ■ ■ ■ ■ ■ <-- 이미 맨 왼쪽은 최소값이겠죠?
거품이 오른쪽부터 뽀글뽀글 올라오는 모습이 연상된다고
거품정렬이란 이름이 붙었습니다;
흠.. 잘 모르겠네영 -.-;;
#include<iostream>
#include<ctime>
using namespace std;
void swap(int *a,int *b){
int tmp;
tmp = *b;
*b = *a;
*a = tmp;
} //sort 하는 과정에서 swap을 구현하면 소스가 지져분해지므로 이렇게 함수를 만듬.
void bubble(int *a,int length){
for(int i=0;i<length-1;i++){
for(int j=0;j<length-(i+1);j++) //이미 가장 오른쪽 정렬이 되어있기 때문에 length-(i+1)까지
if(a[j] > a[j+1])
swap(a[j],a[j+1]); //두칸씩 비교해나가면서 높은걸 오른쪽으로!
}
}
int main(){
int a[30];
srand(time(0));
for(int i=0;i<15;i++)
a[i] = rand()%100; //15개의 숫자를 마구잡이로 집어넣음
bubble(a,15); //정렬 후
for(int i=0;i<15;i++)
printf("%d ",a[i]); //출력!
return 0;
}
'Programing > C- programing' 카테고리의 다른 글
링크드리스트 :: 추가,삭제,출력,찾기,값변경,위치변경,종료 (0) | 2010.08.22 |
---|---|
C-Library qsort() 퀵 정렬 함수 (0) | 2010.08.22 |
트리 : level에 따른 이진트리 자동 생성 소스 (0) | 2010.08.20 |
트리 : 좌우 child를 가지는 트리 만들기 (0) | 2010.08.19 |
큐 : 링크드 리스트로 구현한 간단한 큐 (0) | 2010.08.19 |