프로그래밍/c언어

응용 프로그램 작성 (배열 차순 정렬) -c언어

량아이 2022. 7. 27. 15:23

와! 버블정렬!

어제 오름&내일차순 정렬 배우는줄알고 좋아했다가 알고보니 그냥 정렬 순서만 역순으로 바꾸는 법이었는데, 오늘에서야 비로소 오름차순 정렬을 배운다!!!

 

순서를 결정하는 정렬중 가장 널리 알려진 정렬 알고리즘은 버블 정렬(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함수를 사용하지 않고 방정식을 통해 난수를 생성하는 방법을 서술했다.