C 언어 사전순 정렬 - C eon-eo sajeonsun jeonglyeol

알파벳순으로 정렬시키는 함수 sort_strings()를 가지고 왔습니다.

물론 단번에 코드를 본다면 좋기야 하겠지만 장기적으로 봤을 때

혼자 풀어보기 -> 힌트 -> 코드 보기 순으로 공부하시는 게 실력 향상에 큰 도움이 됩니다!

힌트를 보고 천천히 생각을 거쳐서 문제를 풀어보시고

답안을 확인해보세요

 

더보기

sort_strings(char *list[], int size)

에서

for문을 두 개 돌려서 최소값을 탐색하고 원소의 위치를 교환하는 프로그램을 작성해주면됩니다

기본틀입니다.

#include <stdio.h>

void sort_strings(char *s[], int size);

int main(void) {

	int i;

	char *s[3] = {

		"c", "b", "a"

	}

	;

	sort_strings(s, 3);

	for (i=0;i<3;i++)

	printf("%s\n", s[i]);

	return 0;

}

void sort_strings(char *list[], int size) {
	//최소값을 탐색하고
    //위치를 교환해주는 프로그램을 작성

}

 

더보기

#include <stdio.h>

void sort_strings(char *s[], int size);

int main(void) {

	int i;

	char *s[3] = {

		"c", "b", "a"

	}

	;

	sort_strings(s, 3);

	for (i=0;i<3;i++)

	printf("%s\n", s[i]);

	return 0;

}

void sort_strings(char *list[], int size) {

	int i, j, least;

	char *temp;

	for (i = 0; i < size-1; i++) {

		least = i;

		// i번째 값을 최소값으로 가정

		for (j = i + 1; j < size; j++) // 최소값 탐색

		if(strcmp(list[j], list[least]) < 0)

		least = j;

		// i번째 원소와 least 위치의 원소를 교환

		temp = list[i];

		list[i] = list[least];

		list[least] = temp;

	}

}

 

 

더 많은 C언어 글이 궁금하다면?

https://chuinggun.tistory.com/category/C%EC%96%B8%EC%96%B4

 

공유하기

게시글 관리

구독하기DBN블로그

저작자표시

  • 카카오스토리
  • 트위터
  • 페이스북

'C언어' 카테고리의 다른 글

[C언어] 생명 게임(game of life)라 불리는 인구 증가 게임을 구현해보자  (0)2020.05.05[C언어] 2차원 배열을 다른 2차원 배열로 복사하는 array_copy(char array1[], char array2[], int size) 를 함수로 구현하시오  (0)2020.05.05[C언어] int 형 배열과 int형 포인터를 받아서 배열의 가장 큰 값을 가리키게하는 함수 set_max_mtr()를 구현하고 테스트해보자  (0)2020.05.05[C언어] 문자열의 배열을 인수로 받아 저장된 문자열을 전부 출력하는 pr_str_array()를 작성하시오  (0)2020.05.05[C언어] 속담을 저장한 함수 set_poverb()를 호출하면 인수로 받은 이중 포인터를 이용하여 외부에 있는 char형 포인터 s를 설정하는 set_poverb()를 작성하고 테스트하라  (0)2020.05.05

qsort()함수를 통해 숫자와 문자열을 오름차순 정렬과 내림차순 정렬을 실행해보고 구조체에서 숫자필드를 기준으로 오름차순 정렬과 내림차순 정렬을 실행해보고 구조체의 문자열필드를 기준으로 오름차순 정렬과 내림차순정렬을 실행해 보자.

 

c언어 qsort()함수는 정렬하는 함수로 string.h 라이브러리에서 제공하고 있습니다. qsort()함수를 사용하기 위해서는 헤더파일에 #inlcude 를 추가해야 합니다.

C언어 오름차순 정렬

컴퓨터+a/코딩테스트 연습 2021. 2. 27. 18:31

728x90

C언어를 배울때 가장 기본으로, 자주 쓰이는 코드인데 오랜만에 보면 조금 헷갈릴 때가 있어서 정리해두기로.

 

아래 방법이 가장 단순한 방법

// A_len : 배열 길이, A : 배열 이름
int i, j, temp;
for(i=0; i<A_len; i++)
{
	for(j=i+1; j<A_len+1; j++)
    {
    	if(A[i] > A[j])
        {
        	temp = A[i];
            A[i] = A[j];
            A[j] = temp;
        }
    }
}

첫 번째 항목(기준)과 두 번째~A_len번째 항목을 순서대로 비교하여 첫 번째 항목보다 다른 항목이 크면 값을 바꿔주는 방법.

이 방법은 단순하지만 값을 여러번 바꾸는 단점이 있다.

 

그걸 해결해 줄 방법이 아래 방법

// A_len : 배열 길이, A : 배열 이름
int i, j, min, temp;
for(i=0; i<A_len; i++)
{
	min = i;
	for(j=i+1; j<A_len+1; j++)
    {
    	if(A[min] > A[j])
        {
        	min = j;
        }
    }
    if(min != i)
    {
    	temp = A[i];
        A[i] = A[min];
        A[min] = temp;
    }
}

이렇게 코딩하면, 순서를 매번 바꾸는 것이 아니라 각 요소의 값에 들어갈 위치를 기억해 뒀다가 한 번만 바꾸면 되므로 조금 더 효율적.

 

그런데 왜 코딩 라인이 안 맞을까.

 

C언어 코딩 연습을 하면서 깨닫는데 확실히 C언어보다는 JAVA로 많은 사람들이 공부하고 있다는 느낌이 든다.

검색해도 주로 JAVA 코드가 나오는 편.

JAVA 공부의 필요성을 더 느낀다.

공유하기

게시글 관리

구독하기기린뽀의 일상

'컴퓨터+a > 코딩테스트 연습' 카테고리의 다른 글

C언어 malloc, calloc, realloc, free  (0)2021.02.27코딩테스트 대비, 프로그래머스 정확도/효율성  (0)2021.02.27C언어 제곱근, 거듭제곱 구하기 / sqrt(), pow() 함수  (0)2021.02.26백준 10171번 고양이 Java 코딩  (0)2021.02.09

TAG

C언어, C언어 오름차순, 오름차순 정렬, 오름차순 정렬 코딩

관련글 관련글 더보기

  • C언어 malloc, calloc, realloc, free
  • 코딩테스트 대비, 프로그래머스 정확도/효율성
  • C언어 제곱근, 거듭제곱 구하기 / sqrt(), pow() 함수
  • 백준 10171번 고양이 Java 코딩

댓글 0

댓글 접기 댓글 펼치기

이전 댓글 더보기

댓글

비밀글

등록

C언어를 이용하여 배열에 있는 데이터 값을 오름차순으로 정렬하는 프로그램을 만들어 보겠습니다.

int data[8] = { 85,90,95,70,82,60,92,88 };
int data_size = sizeof(data) / sizeof(int);

먼저 정렬할 데이터는 int형 배열로 8개의 값을 초기화했습니다. 그리고 배열의 크기를 동적으로 받았습니다.

for (i = 0; i < data_size; i++) {
	for (j = 0; j < (data_size - 1) - i; j++) {
		if (data[j] > data[j + 1]) {	// 버블 정렬 사용
			temp = data[j];
			data[j] = data[j + 1];
			data[j + 1] = temp;
		}
	}
}

저는 위 코드에서 보이는 것처럼 for문을 사용을 하여 프로그램을 만들었고, 여러 가지 정렬 알고리즘 중에서 가장 간단한 버블 정렬을 사용했습니다.


#include 

int main(void)
{
	int data[8] = { 85,90,95,70,82,60,92,88 };		// 정렬할 배열
	int i, j, temp = 0;								// 변수 초기화

	printf("Before : ");
	int data_size = sizeof(data) / sizeof(int);
	// sizeof(score) / sizeof(int)는 score배열의 크기를 구하는 방법으로 이것을 이용해 배열의 크기를 가져옴
	
	for (i = 0; i < data_size; i++) {
		printf("%4d", data[i]);	// 정렬 전 배열값 출력
	}

	for (i = 0; i < data_size; i++) {
		for (j = 0; j < (data_size - 1) - i; j++) {
			if (data[j] > data[j + 1]) {	// 버블 정렬 사용
				temp = data[j];
				data[j] = data[j + 1];
				data[j + 1] = temp;
			}
		}
	}

	printf("\nAfter  : ");
	for (i = 0; i < data_size; i++) {
		printf("%4d", data[i]);	// 정렬 후 배열값 출력
	}
	printf("\n");
	return 0;

}

위 코드는 전체 코드입니다. 이렇게 간단한 버블 정렬을 사용해 오름차순으로 정렬하는 프로그램을 만들었습니다.