삽입 정렬
1. 직접 삽입 정렬, C 언어.
알고리즘 생각 : 약간
메인 INT () {
INT A [] = {1,9,4,6,8,10,7}
int로 I, J, 라,
라 = sizeof의 (A) / sizeof의 (A [0])
에 대한 ( I = 1; i가 라 <; 내가 ++)은 {// 두 번째 요소에서, 즉 (1)의 배열 첨자로부터 시작 초기 추측 A [0] 주문한 시퀀스 인해
INT 온도 = A [I ]; // 임시 변수를 삽입 요소 저장
(, J = I-1 {// - J, J> = 0 && A [J]> TEMP) 비교는 j 번째의 요소들의 i 번째 요소의 삽입 (예를 이전 요소의 크기와 비교)
// j 번째의 요소들의 i 번째 요소보다 더 작은, 상기주기 (즉, 삽입 위치를 찾기 위해)로 진행한다. (초기 정렬 순서를 오름차순)
A [j 개의 + 1한다.] = A [J]; // j 번째의 요소를 순차적으로 I-1 번째의 소자에 한 위치 (빨리 시프트 위치 큰 소자 후) 이동
}
을 [J + 1] = 온도; // 의 삽입 소자가 삽입 될 위치 J + 1 (j + 1 삽입 위치를 찾을 필요가있다).
}
내용 (INT A = 0;은 <라; ++) {
의 printf ( "%의 D ', A [A]);
}
0을 반환;
}
2. 이진 삽입 정렬, C 언어
알고리즘 생각 : 약간
메인 INT () {
INT A [] = {15,9,4,6,8,10,11}
int로 I, J, LA, 낮음 높음, MID;
라 = sizeof의 (A) / sizeof의 (A [ 0])
에 대한 (I = 1]. I 라를 <; I는 ++) {
INT의 TEMP = A [I]를 // 삽입 임시 변화 소자 저장
높은 = I- 0 = 로우 1; // 이진 탐색 범위가 결정되는
동안 (저 <= 높음) {// 찾을 증가 주문
/ 중간 = (+ 낮은 높이) 2] // 중간 요소 찾기 내림
IF (A [미드]> TEMP) {
높은 MID = 1]. / / 요소의 중간 위치가 엘리먼트의 i 번째 위치에보다 큰, 높은 중간 = 1 즉
// i 번째 요소는 높은 위치 + (1)에 삽입한다.
다른 {}
낮은 = MID + 1;. // 그렇지 않으면 모바일 저,이 while 루프를 입력합니다.
}
}
내용 (J = I-1; J> = 하이 + 1, J -) {// 해주기 위해 1 + 높은 I-1 요소를 첫 번째 요소로 소자의 위치 이동, 상기 상품의 위치를 결정하는,
제가 하나를 위로 이동 //
; A [+ J. 1]은 [J] =
}
A [하이 + 1] = TEMP를 // 마지막 임시 변수 i 번째 원소 값이 저장된 제 1 고 + 1 번째에 할당 위치, 즉 삽입 부재
}
(INT를 A = 0;은 <라; ++) {위한
의 printf ( "%의 D ', A [A])
}
리턴 0;
}
3. 쉘 종류
II. 정렬 교환
1. 버블 정렬
메인 INT () {
INT A [] = {10,23,20,2,1}
; I는, J, LA, TEMP int로
라 = sizeof의 (A) / sizeof의가 (A [0]); // 어레이를 얻을 길이
(; 나는 = 0 < 라; 내가 ++) {// 배열 길이 정렬의 수 -1
플래그 = 0에서 INT // 종료 플래그 정렬
에 대한 (j를 = LA-1; J> I; j--) {// 각 정렬을위한 비교의 수 : LA-1의 배열 점차 사이클이 감소
하는 경우 (a [J-1] >은 [J]) {// 전환 조건이 만족된다 (승순)
TEMP = A [J. 1- ]
, A는 [J-1]은 [J] =
A [J] = TEMP를,
플래그 = 1에서, // 교환 플래그 종료 후 1
}
}
플래그 비트가 제로이면 (플래그 == 0) {// 일절 교환 마지막 질서 설명을 발생하지 않으면, 단부 정렬, 정렬 결과를 출력.
의 printf ( "실행 분류 결과 % D는 :"I + 1.)
{(;은 <라 ++ INT를 A = 0) 용
의 printf ( "%의 D ', A는 [A])
}
의 printf ("\ ) "N-;
0을 반환; // 최종 분류
}
}
}
2. 빠른 정렬
3. 정렬
1. 간단한 선택 정렬
INT의 main () {
INT A [] = {} 10,23,20,2,1;
int로 I, J, LA, 분, 온도;
라를 sizeof = (A) /를 sizeof (A [0]);
대 (I = 0; I <라; 내가 ++) {
분 = 1;
에 대한 (j = 1 + 1, J <라; J ++) {
경우 (A [J] <A [분]) {
분 = J;
}
}
(최소 = I!) 경우에 {
온도 = A [I];
A [I] = A [분];
A [분] = 온도;
}
의 printf ( "第% D趟排序结果:"I + 1);
대 (INT를 A = 0;은 <라; ++) {
의 printf ( "%의 D ', A [A]);
}
의 printf ( "\ n")를;
}
}
2. 힙 정렬