중화사전망 - 서예자전 - C 사전 순서 정렬 알고리즘
C 사전 순서 정렬 알고리즘
알고리즘 설계:
(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]);
}