문제
C 언어에서 정렬을 사용하면 검색이 더 쉬워지는 이유는 무엇입니까? C에서 정렬 효율성을 어떻게 판단할 수 있습니까?
해결책
정렬은 요소를 오름차순(또는 내림차순)으로 정렬하는 과정입니다.
-
정렬이라는 용어는 인간이 빠르게 검색하는 것의 중요성을 깨달았을 때 생겨났습니다.
-
인생에는 데이터베이스의 특정 기록, 목록의 목록 번호, 전화 번호부의 번호, 책의 특정 페이지 등과 같이 우리가 검색해야 하는 다양한 것들이 있습니다.
-
데이터가 정렬되지 않고 정렬되지 않은 형태로 보관되면 특정 항목을 검색하기가 어려워집니다. 하지만 다행히도 정렬이라는 개념이 생겨서 모든 사람이 데이터를 순서대로 정렬하기가 더 쉬워졌습니다.
-
정렬은 데이터를 순서대로 정렬하여 검색을 더 쉽게 만듭니다.
분류 효율성
-
카드 덱을 순서대로 정렬하려면 먼저 모든 카드를 확인하고 계속 진행하면서 덱을 만듭니다.
-
데크를 순서대로 배열하는 데 시간이 많이 걸리지만 동일한 방식으로 수행합니다. 하지만 컴퓨터는 이렇게 작동하지 않습니다.
-
프로그래밍 시대 초기부터 과학자들은 데이터를 정렬하기 위해 서로 다른 알고리즘으로 정렬하는 문제를 해결하기 위해 노력해 왔습니다.
어떤 알고리즘이 다른 알고리즘보다 나은지 판단하는 기준은 다음과 같습니다. -
- 주어진 데이터를 정렬하는 데 걸린 시간입니다.
- 이렇게 하려면 메모리 공간이 필요합니다.
예시
다음은 데이터 정렬을 위한 C 프로그램입니다 -
#include<stdio.h> int main(){ int a[50], i,j,n,t,sm; printf("enter the No: of elements in the list:\n"); scanf("%d", &n); printf("enter the elements:\n"); for(i=0; i<n; i++){ scanf ("%d", &a[i]); } for (i=0; i<n-1; i++){ sm=i; for (j=i+1; j<n; j++){ if (a[j] < a[sm]){ sm=j; } } t=a[i]; a[i]=a[sm]; a[sm]=t; } printf ("after selection sorting the elements are:\n"); for (i=0; i<n; i++) printf("%d\t", a[i]); return 0; }
출력
위의 프로그램을 실행하면 다음과 같은 결과가 나온다 -
출력
enter the No: of elements in the list: 4 enter the elements: 34 12 56 7 after selection sorting the elements are: 7 12 34 56