중화사전망 - 서예자전 - C 사전 순서 정렬 알고리즘

C 사전 순서 정렬 알고리즘

키보드를 통해 n 명의 학생 이름을 입력하고 사전에 따라 결과를 배열한다.

알고리즘 설계:

(1) n 명의 학생 이름을 저장할 2 차원 문자 배열을 정의합니다.

문자 이름 [n] [13];

(2) 선택적 정렬 방법을 사용하여 함수 strcmp () 를 비교하여 n 개 문자열을 정렬합니다.

③ 출력 결과

선택적 분류 사상

(1) 첫 번째 패스에서 n 개 레코드 중 가장 작은 키 값을 가진 레코드를 첫 번째 레코드로 선택합니다.

K = 0;;

For (j = 0+1; J if(k! = 0) {t = a [k]; A [k] = a [I]; A [I] = t; }/* 유닛 k 와 유닛 0 의 교환 */

(2) 두 번째 단계에서 나머지 N- 1 개 레코드에서 가장 작은 키 값을 가진 레코드를 두 번째 레코드로 선택합니다.

K =1;

For (j =1+1; J if(k! =1) {t = a [k]; A [k] = a [I]; A [I] = t; }

(3) 일반적으로 I 번에서는 가장 작은 키 값을 가진 레코드를 I 조 레코드 (I = 1, 2, ... n- 1) 에서 나머지 n-I+/kk 로 선택합니다

K = I-1;

For(j = I;; J if(k! =1) {t = a [k]; A [k] = a [I]; A [I] = t; }

N 개 요소가 있는 배열 a 의 경우 c 언어로 선택하고 정렬하는 프로그램 세그먼트는 다음과 같습니다.

For(I = 0;; I {k = I

For (j = I+1; J if(k! = I) {t = a [k]; A [k] = a [I]; A [I] = t; }

}

마찬가지로, 우리는 2 차원 문자 배열 Charname [n] [13] 을 N 개의 1 차원 문자 배열로 간주합니다.

이름 [0], 이름 [1], 이름 [2], ..., 이름 [N- 1].

시퀀서 선택 섹션에서 두 숫자를 비교합니다.

If (a [j] 를 if (strcmp (name [j], name [k]) 로 변경

그리고 데이터 교환문: {t = a [k]; A [k] = a [I]; A [I] = t; }

변경: {strcpy(t, name [k]); Strcpy (이름 [k], 이름 [I]); Strcpy (이름 [I], t); }

전체 프로그램 목록

# "stdio.h" 포함

# "string.h" 포함

주 ()

{cahr name [10] [13], temp [13]; Int I;;

For(I = 0;; 나< 10; I++){

Printf ("%d 명의 학생 이름을 입력하십시오. \n", I+1);

Get (이름 [I]);

}

For(I = 0;; 나<9; I++)

{k = I;;

For (j = I+1; J< 10; J++) if (strcmp (이름 [j], 이름 [k]) < 0) k = j;

만약 (k! = I){ strcpy(temp, name [k]);

Strcpy (이름 [k], 이름 [I]); Strcpy (이름 [I], temp);

}

}

Printf ("10 학생의 이름은 사전순으로 배열되어 있습니다. \ n");

For(I = 0;; 나< 10; I++) printf ("\ n% s", name [I]);

}