와! 버블정렬!
어제 오름&내일차순 정렬 배우는줄알고 좋아했다가 알고보니 그냥 정렬 순서만 역순으로 바꾸는 법이었는데, 오늘에서야 비로소 오름차순 정렬을 배운다!!!
순서를 결정하는 정렬중 가장 널리 알려진 정렬 알고리즘은 버블 정렬(Bubble Sort)이 있다.
이 정렬방법은 이웃 자료들을 비교하여 순서 바뀐 원소를 교환하는 방법이다.
#include<stdio.h>
#include <string.h>
void bubble(char *, int);
int main(){
char str[80];
gets(str);
bubble(str, strlen(str));
printf("재정렬한 결과 %s", str);
}
void bubble(char *item, int count){
int pass =0;
int change =1;
int j;
char t;
while (pass < count -1&& change){ // n-1회 반복 수행
change=0;
for(j=0;j<count-pass-1;++j){ //가장 큰것은 맨 뒷자리로 보내버림이미 정렬해 맨 뒤로 보내버린 것을 제외하고 정렬
if(item[j]>item[j+1]){ //앞 인덱스가 뒷 인덱스보다 클 경우 자리 바꿈
change =1;
t=item[j];
item[j]=item[j+1];
item[j+1]=t;
}
}
pass++;
}
}
이 프로그램을 보고 이해가 됐다고 판단되서 풀지못했던 백준 오름차순 정렬을 풀어보았지만 생각보다 쉽지 않았다.
라고 생각했으나
'a[j+1]'을 'a[j-1]' 라고 씀 ㅋㅋㅋㅋ엌ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ
난 또 내가 사용자 정의함수 잘 못쓰니 이거때문인줄 ㅋㅋㅋ
백준 채점해보니 시간초과됨 최근 근황 레전드ㅋㅋㅋ
솔직히 아직 위의 코드에서 change 이 변수는 왜 사용하는지 아직은 모르겠다.
이후에도
선택 정렬 - 가장 작은 값을 가진 원소를 선택하여 처음 원소와 교체한다.
버블정렬과 비슷하다.
순차 탐색 - 문자열 중 원하는 문자가 있는지 차례로 부합하는 것을 발견하면 종료하고 아니면 배열 끝까지 찾아가는 방법이다.
무작위로 늘어놓은 데이터 모임에서 검색을 수행합니다.
이진 탐색 - 교재에서는 순차탐색과 비슷한 사용법을 썼다.
일정한 규칙으로 늘어놓은 데이터 모임에서 아주 빠른 검색을 수행합니다.
랜덤 발생 함수 - rand함수를 사용하지 않고 방정식을 통해 난수를 생성하는 방법을 서술했다.
'프로그래밍 > c언어' 카테고리의 다른 글
퀵소트를 이용한 구조체 정렬(아직임) (2) | 2022.11.14 |
---|---|
파일 입출력 라이브러리 (0) | 2022.07.26 |
표준 입출력 함수와 문자열 함수(엔터키 무시, 외울 함수 많음) -C언어 (0) | 2022.07.25 |
표준 라이브러리의 선행 처리기 -C언어 (0) | 2022.07.13 |
와! 구조체! 신세계! (짤막한 포인터) -C언어 (0) | 2022.07.13 |