L U > U @
EB9A 6 : U ; EU ]L [
Introduction to
Sorting
h
D [ U
k
데이터를 특정한 조건에 따라 일정한 순서가 되도록
다시 배열하는 일
y k
bl s bl
1
1 t
L 1
h
D [ U
이름 학번 주소 연락처
필드 필드 필드 필드
키(key)
레코드
1 L y
p b y
s
p
p
p
p
U[L UHS [ U
v v
L [L UHS [ U
p v v
h
D [ U 7S [
1 y
DLSL [ U D [ U
#define SWAP(x, y, t) ((t) = (x), (x)=(y), (y)=(t))
void swap(x, y) {
int t = x;
x = y;
y = t;
}
void swap(*x, *y) {
int t = *x;
*x = *y;
*y = t;
}
r 1 b H U w p
mr j y
y
b b
qd qd
y mr qd y
1 h
DLSL [ U D [ U
, / (
mr
y
b b
qd qd
y mr qd y
1 h
DLSL [ U D [ U
, /(
mr
문제점?): 정렬 대상 수 만큼의 추가 저장 공간이 필요
qd 5
U SH L [ U
,/(
y
b b
qd qd
y mr qd y
1 h
DLSL [ U D [ U
, /(
mr
문제점?): 정렬 대상 수 만큼의 추가 저장 공간이 필요
qd 5
U SH L [ U
,/(
y
b b
qd qd
y mr qd y
1 h
DLSL [ U D [ U
, /(
mr
문제점?): 정렬 대상 수 만큼의 추가 저장 공간이 필요
qd 5
U SH L [ U
, /(
y
b b
qd qd
y mr qd y
1 h
DLSL [ U D [ U
, /(
mr
문제점?): 정렬 대상 수 만큼의 추가 저장 공간이 필요
qd 5
U SH L [ U
, /(
p
1 p
DLSL [ U D [ U
9 9
9
w 5s
M SL K SL 4 M
y
1
DLSL [ U D [ U
1
1 LSL [ UD [
) 1
void selectionSort(int arr[], int n) {
int idx;
for(int i = 0; i < n-1; i++) {
idx = i;
for(int j=i+1; j < n; j++)
if(arr[j]<arr[idx]) idx = j;
swap(&arr[i], &arr[idx]);
}
}
y
y r t
1 h
?U L [ U D [ U
mr
, / (
y
y r t
1 h
?U L [ U D [ U
mr
,/ (
y
y r t
1 h
?U L [ U D [ U
mr
,/ (
y
y r t
1 h
?U L [ U D [ U
mr
, /(
y
y r t
1 h
?U L [ U D [ U
mr
, /(
y
y r t
1 h
?U L [ U D [ U
mr
, /(
U SH L [ U
/, (
y
y r t
1 h
?U L [ U D [ U
mr
, /(
U SH L [ U
/, (
y
y r t
1 h
?U L [ U D [ U
mr
, /(
U SH L [ U
/, (
y
y r t
1 h
?U L [ U D [ U
mr
, /(
U SH L [ U
/, (
y
y r t
1 h
?U L [ U D [ U
mr
, /(
U SH L [ U
/,(
y
y r t
1 h
?U L [ U D [ U
mr
, /(
U SH L [ U
/,(
데이터를 옮겨야 할 때 제일 먼저 발생하는 위치는?
1 p
?U L [ U D [ U
p
w s
w
w
w 5
M SL K SL 4 M
y
1
?U L [ U D [ U
1
1 ?U L [ UD [
) 1
void insertionSort(int arr[], int n) {
int j, new; UL 1 Q1 e
for(int i = 1; i < n-1; i++) {
j= i-1;
new = arr[i];
while(j >= 0 && arr[j] > new) {
arr[j+1] = arr[j];
j--;
}
}
}
arr[j] = new;
y
1
?U L [ U D [ U
1
1 ?U L [ UD [
) 1
void insertionSort(int arr[], int n) {
int j, new; UL 1 Q1 e
for(int i = 1; i < n-1; i++) {
j= i-1;
new = arr[i];
while(j >= 0 && arr[j] > new) {
arr[j+1] = arr[j];
j--;
}
}
}
arr[j] = new;
y
y h s
yb s s s r
1 h
8 IISL D [ U
/, (
y
y h s
yb s s s r
1 h
8 IISL D [ U
/, (
y
y h s
yb s s s r
1 h
8 IISL D [ U
/, ( , / (
y
y h s
yb s s s r
1 h
8 IISL D [ U
/, ( , / ( , / (
y
y h s
yb s s s r
1 h
8 IISL D [ U
/, ( , / ( , /(
y
y h s
yb s s s r
1 h
8 IISL D [ U
/, ( , / ( , /(
, ( /
y
y h s
yb s s s r
1 h
8 IISL D [ U
/, ( , / ( , /(
, ( / , ( /
y
y h s
yb s s s r
1 h
8 IISL D [ U
/, ( , / ( , /(
, ( / ,( /
y
y h s
yb s s s r
1 h
8 IISL D [ U
/, ( , / ( , /(
, ( / ,( /
,( /
y
y h s
yb s s s r
1 h
8 IISL D [ U
/, ( , / ( , /(
, ( / ,( /
,( /
y
1
8 IISL D [ U
1
1 I IISLD [
) 1
void bubbleSort(int arr[], int n) {
for(int i = n-1; i > 0; i—) {
for(int j=0; j < i; j++){
if(arr[j]<arr[j+1])swap(&arr[j], &arr[j+1]);
}
}
}
y
m
> g ”
”
u dl f c
b z o
1 h
D LSS D [ U
/ (,
y
m
> g ”
”
u dl f c
b z o
1 h
D LSS D [ U
/(,
y
m
> g ”
”
u dl f c
b z o
1 h
D LSS D [ U
/( ,
y
m
> g ”
”
u dl f c
b z o
1 h
D LSS D [ U
/( ,
y
m
> g ”
”
u dl f c
b z o
1 h
D LSS D [ U
/( ,
/( ,
y
1
D LSS D [ U
1
1 LSSD [
) 1
void shellSort(int arr[], int n) {
for(int i = n-1; i > 0; i--) {
for(int j=0; j < i; j++){
if(arr[j]<arr[j+1])swap(&arr[j], &arr[j+1]);
}
}
}
y
h v y p
K ] KLK HUK U L
> o hl
) i : p i o) p i > ) p i i
1 h
BL L D [ U
) ( () ) ))(,(),
) ( () ) ))(,(),
) ( () ) (), ))(,
y
h v y p
K ] KLK HUK U L
> o hl
) i : p i o) p i > ) p i i
1 h
BL L D [ U
) ( () ) ))(,(),
) ( () ) ))(,(),
)( () ) ( ), ))(,
y
h v y p
K ] KLK HUK U L
> o hl
) i : p i o) p i > ) p i i
1 h
BL L D [ U
) ( () ) ))(,(),
) ( () ) ))(,(),
)( () ) ( ), ))(,
y
h v y p
K ] KLK HUK U L
> o hl
) i : p i o) p i > ) p i i
1 h
BL L D [ U
) ( () ) ))(,(),
) ( () ) ))(,(),
)
(
() ) ( ), ))(,
y
h v y p
K ] KLK HUK U L
> o hl
) i : p i o) p i > ) p i i
1 h
BL L D [ U
) ( () ) ))(,(),
) ( () ) ))(,(),
)
( ()
) ( ), ))(,
y
h v y p
K ] KLK HUK U L
> o hl
) i : p i o) p i > ) p i i
1 h
BL L D [ U
) ( () ) ))(,(),
) ( () ) ))(,(),
)
( () )
( ), ))(,
y
h v y p
K ] KLK HUK U L
> o hl
) i : p i o) p i > ) p i i
1 h
BL L D [ U
) ( () ) ))(,(),
) ( () ) ))(,(),
)( () )
( ), ))(,
y
h v y p
K ] KLK HUK U L
> o hl
) i : p i o) p i > ) p i i
1 h
BL L D [ U
) ( () ) ))(,(),
) ( () ) ))(,(),
)( () ) ( ),))(,
y
h v y p
K ] KLK HUK U L
> o hl
) i : p i o) p i > ) p i i
1 h
BL L D [ U
) ( () ) ))(,(),
) ( () ) ))(,(),
)( () )( ),))(,
1 p
BL L D [ U
p
h b (hb z g y
z
[H [ LUK [H [ LUK
[H [ LUK [H [ LUK
mergeSort() mergeSort()
merge()
mergeSort() mergeSort()
merge()
K K (
K K (
[H [ LUK [H [ LUK
K K (
[H [ LUK
K
[H [
LUK
[H [
LUK
merge()merge()merge()
1
BL L D [ U
1
1 L L U[ S [FG U[ [H [ U[ K U[ LUK 2
+ 1
int tempSorted[MAX_LIST_SIZE];
void merge(int list[], int start, int mid, int end) {
int i = start, j = mid+1, k = 0;
while (i <= mid && j <= end) {
if (list[i] <= list[j])
tempSorted[k++] = list[i++];
else
tempSorted[k++] = list[j++];
}
if (i > mid)
for (i = j; i <= end; i++) tempSorted[k++] = list[i];
else
for (j = i; j <= mid; j++) tempSorted[k++] = list[j];
for (i = start, k = 0; i <= end; i++) list[i] = tempSorted[k++];
}
1
BL L D [ U
y
1
1 L LD [ U[ S [FG U[ [H [ U[ LUK 2
1
void mergeSort(int list[], int start, int end) {
if (start < end) {
int mid = (start + end)/2;
mergeSort(list, start, mid);
mergeSort(list, mid+1, end);
merge(list, start, mid, end);
}
return;
}
y
K ] KL HUK U L xi
“t p
p
1 h
C D [ U
, / + )-(0
] [
y
K ] KL HUK U L xi
“t p
p
1 h
C D [ U
, / + )-(0
) + /-0(,
] [ e ] [ e
] [
y
K ] KL HUK U L xi
“t p
p
1 h
C D [ U
, / + )-(0
) + /-0(,
) + /-0( ,
] [ e ] [ e
] [
] [ e ] [ e
p
1 p
C D [ U
/ + )-(0
S 1 ] [ e
1 ] [ e
S
,
p
1 p
C D [ U
/ + )-(0
S 1 ] [ e
1 ] [ e
S
,
p
1 p
C D [ U
/ + )-(0
S 1 ] [ e
1 ] [ e
S
,
p
1 p
C D [ U
/
+ )-(0
S 1 ] [ e
1 ] [ e
S
,
p
1 p
C D [ U
/+) -(0
S 1 ] [ e
1 ] [ e
S
,
p
1 p
C D [ U
/+) -(0
S 1 ] [ e
1 ] [ e
S
,
p
1 p
C D [ U
/+) -(0
S 1 ] [ e
1 ] [ e
S
,
p
1 p
C D [ U
/+) -(0
S 1 ] [ e
1 ] [ e
S
,
p
1 p
C D [ U
/+) -(0
S 1 ] [ e
1 ] [ e
S
,
p
1 p
C D [ U
/+) -(
0
S 1 ] [ e
1 ] [ e
S
,
p
1 p
C D [ U
/+) -( 0
S 1 ] [ e
1 ] [ e
S
,
p
1 p
C D [ U
/+) -( 0
S 1 ] [ e
1 ] [ e
S
,
p
1 p
C D [ U
/+) -( 0
S 1 ] [ e
1 ] [ e
S
,
p
1 p
C D [ U
/+) -
(
0
S 1 ] [ e
1 ] [ e
S
,
p
1 p
C D [ U
/+) -( 0
S 1 ] [ e
1 ] [ e
S
,
1 p
C D [ U
+)( 0
S
, /-
p
1 p
C D [ U
+)( 0
S
, /-
p
1 p
C D [ U
+)( 0
S
, /-
p
1 p
C D [ U
+)( 0
S S
, /-
p
1 p
C D [ U
+)( 0
S S
, /-
p
1 p
C D [ U
+)( 0
S S
, /-
p
1 p
C D [ U
+)( 0
S S
, /-
p
1 p
C D [ U
+)(
0
S S
, /-
p
1 p
C D [ U
+)( 0
S S
, /-
p
1 p
C D [ U
+)( 0, /-
S S
+)( 0
S S
, /-
p
1 p
C D [ U
+)( 0, /-
S S
+)( 0
S S
, /-
p
1 p
C D [ U
+)( 0, /-
S S
+)( 0
S S
, /-
p
1 p
C D [ U
+)( 0, /-
S S
+)( 0, /-
+)( 0
S S
, /-
p
S e e
. 0-2 9 9 9
,- , 0-2 9 9 9
. 9 ,- , 9
e ] [ er s
1
C D [ U
1 e ] [
1 ] [< UK U[ S [FG U[ [H [ U[ LUK 2
1
] [ y
int pivotFind(int list[], int start, int end) {
int pivot = list[start], low = start+1, high = end;
do {
while (low <= high && list[low] < pivot) low++;
while (low <= high && list[high] > pivot) high--;
if (low < high) swap(&list[low], &list[high]);
}while(low < high);
swap(&list[start], &list[high]);
return high;
}
1
C D [ U
y
1
1 D [ U[ S [FG U[ [H [ U[ LUK 2
1
void quickSort(int list[], int start, int end) {
if (start < end) {
int pivotPosition = pivotFind(list, start, end);
quickSort(list, start, pivotPosition-1);
quickSort(list,pivotPosition+1, end);
}
}
1 S I H M U [ U
C D [ U
void qsort(
void *base,
size_t num,
size_t width,
int (*compare) (const void *, const void *)
);
[H [ HKK L M HU H H
[ L U IL M LSL LU[ M HU H H
aL M [ L LSL LU[ M HU H H U I [L
H L M U [ U [ H[ H L [ LSL LU[ HUK L[ U U[L L ]HS L
KL]LS L SK SL LU[ [ H L M U [ U
L[ U ]HS L
3 1 LU LSL LU[ ( SL [ HU LSL LU[ )
1 LU LSL LU[ ( L HS [ LSL LU[ )
4 1 LU LSL LU[ ( LH[L [ HU LSL LU[ )
(
)
+
,
-
/
0
y
s p
b
y HK k e
y o o h
y 1 h
HK D [ U y
/ ) ,
(
)
+
,
-
/
0
y
s p
b
y HK k e
y o o h
y 1 h
HK D [ U y
/
)
,
(
)
+
,
-
/
0
y
s p
b
y HK k e
y o o h
y 1 h
HK D [ U y
/
) ,
(
)
+
,
-
/
0
y
s p
b
y HK k e
y o o h
y 1 h
HK D [ U y
/) , /) ,
y 1 p
HK D [ U y
z
p (
p (
p
(
)
+
,
-
/
0
)/ 0 0 /( -) ) / )-
y 1 p
HK D [ U y
z
p (
p (
p
(
)
+
,
-
/
0
)/
0
0
/( -) ) / )-
y 1 p
HK D [ U y
z
p (
p (
p
(
)
+
,
-
/
0
)/
0
0
/(
-))
/ )-
y 1 p
HK D [ U y
z
p (
p (
p
(
)
+
,
-
/
0
)/
0
0
/(
-))
/
)-
(
)
+
,
-
/
0
y 1 p
HK D [ U y
z
p (
p (
p
(
)
+
,
-
/
0
)/0 0/( -) ) /)-
(
)
+
,
-
/
0
y 1 p
HK D [ U y
z
p (
p (
p
(
)
+
,
-
/
0
)/
0
0
/(
-)
)
/
)-
(
)
+
,
-
/
0
y 1 p
HK D [ U y
z
p (
p (
p
(
)
+
,
-
/
0
)/ 00 /(-) )/)-

7. sorting

  • 1.
    L U >U @ EB9A 6 : U ; EU ]L [ Introduction to Sorting
  • 2.
    h D [ U k 데이터를특정한 조건에 따라 일정한 순서가 되도록 다시 배열하는 일 y k bl s bl
  • 3.
    1 1 t L 1 h D[ U 이름 학번 주소 연락처 필드 필드 필드 필드 키(key) 레코드 1 L y
  • 4.
    p b y s p p p p U[LUHS [ U v v L [L UHS [ U p v v h D [ U 7S [
  • 5.
    1 y DLSL [U D [ U #define SWAP(x, y, t) ((t) = (x), (x)=(y), (y)=(t)) void swap(x, y) { int t = x; x = y; y = t; } void swap(*x, *y) { int t = *x; *x = *y; *y = t; } r 1 b H U w p mr j y
  • 6.
    y b b qd qd ymr qd y 1 h DLSL [ U D [ U , / ( mr
  • 7.
    y b b qd qd ymr qd y 1 h DLSL [ U D [ U , /( mr 문제점?): 정렬 대상 수 만큼의 추가 저장 공간이 필요 qd 5 U SH L [ U ,/(
  • 8.
    y b b qd qd ymr qd y 1 h DLSL [ U D [ U , /( mr 문제점?): 정렬 대상 수 만큼의 추가 저장 공간이 필요 qd 5 U SH L [ U ,/(
  • 9.
    y b b qd qd ymr qd y 1 h DLSL [ U D [ U , /( mr 문제점?): 정렬 대상 수 만큼의 추가 저장 공간이 필요 qd 5 U SH L [ U , /(
  • 10.
    y b b qd qd ymr qd y 1 h DLSL [ U D [ U , /( mr 문제점?): 정렬 대상 수 만큼의 추가 저장 공간이 필요 qd 5 U SH L [ U , /(
  • 11.
    p 1 p DLSL [U D [ U 9 9 9 w 5s M SL K SL 4 M
  • 12.
    y 1 DLSL [ UD [ U 1 1 LSL [ UD [ ) 1 void selectionSort(int arr[], int n) { int idx; for(int i = 0; i < n-1; i++) { idx = i; for(int j=i+1; j < n; j++) if(arr[j]<arr[idx]) idx = j; swap(&arr[i], &arr[idx]); } }
  • 13.
    y y r t 1h ?U L [ U D [ U mr , / (
  • 14.
    y y r t 1h ?U L [ U D [ U mr ,/ (
  • 15.
    y y r t 1h ?U L [ U D [ U mr ,/ (
  • 16.
    y y r t 1h ?U L [ U D [ U mr , /(
  • 17.
    y y r t 1h ?U L [ U D [ U mr , /(
  • 18.
    y y r t 1h ?U L [ U D [ U mr , /( U SH L [ U /, (
  • 19.
    y y r t 1h ?U L [ U D [ U mr , /( U SH L [ U /, (
  • 20.
    y y r t 1h ?U L [ U D [ U mr , /( U SH L [ U /, (
  • 21.
    y y r t 1h ?U L [ U D [ U mr , /( U SH L [ U /, (
  • 22.
    y y r t 1h ?U L [ U D [ U mr , /( U SH L [ U /,(
  • 23.
    y y r t 1h ?U L [ U D [ U mr , /( U SH L [ U /,( 데이터를 옮겨야 할 때 제일 먼저 발생하는 위치는?
  • 24.
    1 p ?U L[ U D [ U p w s w w w 5 M SL K SL 4 M
  • 25.
    y 1 ?U L [U D [ U 1 1 ?U L [ UD [ ) 1 void insertionSort(int arr[], int n) { int j, new; UL 1 Q1 e for(int i = 1; i < n-1; i++) { j= i-1; new = arr[i]; while(j >= 0 && arr[j] > new) { arr[j+1] = arr[j]; j--; } } } arr[j] = new;
  • 26.
    y 1 ?U L [U D [ U 1 1 ?U L [ UD [ ) 1 void insertionSort(int arr[], int n) { int j, new; UL 1 Q1 e for(int i = 1; i < n-1; i++) { j= i-1; new = arr[i]; while(j >= 0 && arr[j] > new) { arr[j+1] = arr[j]; j--; } } } arr[j] = new;
  • 27.
    y y h s ybs s s r 1 h 8 IISL D [ U /, (
  • 28.
    y y h s ybs s s r 1 h 8 IISL D [ U /, (
  • 29.
    y y h s ybs s s r 1 h 8 IISL D [ U /, ( , / (
  • 30.
    y y h s ybs s s r 1 h 8 IISL D [ U /, ( , / ( , / (
  • 31.
    y y h s ybs s s r 1 h 8 IISL D [ U /, ( , / ( , /(
  • 32.
    y y h s ybs s s r 1 h 8 IISL D [ U /, ( , / ( , /( , ( /
  • 33.
    y y h s ybs s s r 1 h 8 IISL D [ U /, ( , / ( , /( , ( / , ( /
  • 34.
    y y h s ybs s s r 1 h 8 IISL D [ U /, ( , / ( , /( , ( / ,( /
  • 35.
    y y h s ybs s s r 1 h 8 IISL D [ U /, ( , / ( , /( , ( / ,( / ,( /
  • 36.
    y y h s ybs s s r 1 h 8 IISL D [ U /, ( , / ( , /( , ( / ,( / ,( /
  • 37.
    y 1 8 IISL D[ U 1 1 I IISLD [ ) 1 void bubbleSort(int arr[], int n) { for(int i = n-1; i > 0; i—) { for(int j=0; j < i; j++){ if(arr[j]<arr[j+1])swap(&arr[j], &arr[j+1]); } } }
  • 38.
    y m > g ” ” udl f c b z o 1 h D LSS D [ U / (,
  • 39.
    y m > g ” ” udl f c b z o 1 h D LSS D [ U /(,
  • 40.
    y m > g ” ” udl f c b z o 1 h D LSS D [ U /( ,
  • 41.
    y m > g ” ” udl f c b z o 1 h D LSS D [ U /( ,
  • 42.
    y m > g ” ” udl f c b z o 1 h D LSS D [ U /( , /( ,
  • 43.
    y 1 D LSS D[ U 1 1 LSSD [ ) 1 void shellSort(int arr[], int n) { for(int i = n-1; i > 0; i--) { for(int j=0; j < i; j++){ if(arr[j]<arr[j+1])swap(&arr[j], &arr[j+1]); } } }
  • 44.
    y h v yp K ] KLK HUK U L > o hl ) i : p i o) p i > ) p i i 1 h BL L D [ U ) ( () ) ))(,(), ) ( () ) ))(,(), ) ( () ) (), ))(,
  • 45.
    y h v yp K ] KLK HUK U L > o hl ) i : p i o) p i > ) p i i 1 h BL L D [ U ) ( () ) ))(,(), ) ( () ) ))(,(), )( () ) ( ), ))(,
  • 46.
    y h v yp K ] KLK HUK U L > o hl ) i : p i o) p i > ) p i i 1 h BL L D [ U ) ( () ) ))(,(), ) ( () ) ))(,(), )( () ) ( ), ))(,
  • 47.
    y h v yp K ] KLK HUK U L > o hl ) i : p i o) p i > ) p i i 1 h BL L D [ U ) ( () ) ))(,(), ) ( () ) ))(,(), ) ( () ) ( ), ))(,
  • 48.
    y h v yp K ] KLK HUK U L > o hl ) i : p i o) p i > ) p i i 1 h BL L D [ U ) ( () ) ))(,(), ) ( () ) ))(,(), ) ( () ) ( ), ))(,
  • 49.
    y h v yp K ] KLK HUK U L > o hl ) i : p i o) p i > ) p i i 1 h BL L D [ U ) ( () ) ))(,(), ) ( () ) ))(,(), ) ( () ) ( ), ))(,
  • 50.
    y h v yp K ] KLK HUK U L > o hl ) i : p i o) p i > ) p i i 1 h BL L D [ U ) ( () ) ))(,(), ) ( () ) ))(,(), )( () ) ( ), ))(,
  • 51.
    y h v yp K ] KLK HUK U L > o hl ) i : p i o) p i > ) p i i 1 h BL L D [ U ) ( () ) ))(,(), ) ( () ) ))(,(), )( () ) ( ),))(,
  • 52.
    y h v yp K ] KLK HUK U L > o hl ) i : p i o) p i > ) p i i 1 h BL L D [ U ) ( () ) ))(,(), ) ( () ) ))(,(), )( () )( ),))(,
  • 53.
    1 p BL LD [ U p h b (hb z g y z [H [ LUK [H [ LUK [H [ LUK [H [ LUK mergeSort() mergeSort() merge() mergeSort() mergeSort() merge() K K ( K K ( [H [ LUK [H [ LUK K K ( [H [ LUK K [H [ LUK [H [ LUK merge()merge()merge()
  • 54.
    1 BL L D[ U 1 1 L L U[ S [FG U[ [H [ U[ K U[ LUK 2 + 1 int tempSorted[MAX_LIST_SIZE]; void merge(int list[], int start, int mid, int end) { int i = start, j = mid+1, k = 0; while (i <= mid && j <= end) { if (list[i] <= list[j]) tempSorted[k++] = list[i++]; else tempSorted[k++] = list[j++]; } if (i > mid) for (i = j; i <= end; i++) tempSorted[k++] = list[i]; else for (j = i; j <= mid; j++) tempSorted[k++] = list[j]; for (i = start, k = 0; i <= end; i++) list[i] = tempSorted[k++]; }
  • 55.
    1 BL L D[ U y 1 1 L LD [ U[ S [FG U[ [H [ U[ LUK 2 1 void mergeSort(int list[], int start, int end) { if (start < end) { int mid = (start + end)/2; mergeSort(list, start, mid); mergeSort(list, mid+1, end); merge(list, start, mid, end); } return; }
  • 56.
    y K ] KLHUK U L xi “t p p 1 h C D [ U , / + )-(0 ] [
  • 57.
    y K ] KLHUK U L xi “t p p 1 h C D [ U , / + )-(0 ) + /-0(, ] [ e ] [ e ] [
  • 58.
    y K ] KLHUK U L xi “t p p 1 h C D [ U , / + )-(0 ) + /-0(, ) + /-0( , ] [ e ] [ e ] [ ] [ e ] [ e
  • 59.
    p 1 p C D[ U / + )-(0 S 1 ] [ e 1 ] [ e S ,
  • 60.
    p 1 p C D[ U / + )-(0 S 1 ] [ e 1 ] [ e S ,
  • 61.
    p 1 p C D[ U / + )-(0 S 1 ] [ e 1 ] [ e S ,
  • 62.
    p 1 p C D[ U / + )-(0 S 1 ] [ e 1 ] [ e S ,
  • 63.
    p 1 p C D[ U /+) -(0 S 1 ] [ e 1 ] [ e S ,
  • 64.
    p 1 p C D[ U /+) -(0 S 1 ] [ e 1 ] [ e S ,
  • 65.
    p 1 p C D[ U /+) -(0 S 1 ] [ e 1 ] [ e S ,
  • 66.
    p 1 p C D[ U /+) -(0 S 1 ] [ e 1 ] [ e S ,
  • 67.
    p 1 p C D[ U /+) -(0 S 1 ] [ e 1 ] [ e S ,
  • 68.
    p 1 p C D[ U /+) -( 0 S 1 ] [ e 1 ] [ e S ,
  • 69.
    p 1 p C D[ U /+) -( 0 S 1 ] [ e 1 ] [ e S ,
  • 70.
    p 1 p C D[ U /+) -( 0 S 1 ] [ e 1 ] [ e S ,
  • 71.
    p 1 p C D[ U /+) -( 0 S 1 ] [ e 1 ] [ e S ,
  • 72.
    p 1 p C D[ U /+) - ( 0 S 1 ] [ e 1 ] [ e S ,
  • 73.
    p 1 p C D[ U /+) -( 0 S 1 ] [ e 1 ] [ e S ,
  • 74.
    1 p C D[ U +)( 0 S , /- p
  • 75.
    1 p C D[ U +)( 0 S , /- p
  • 76.
    1 p C D[ U +)( 0 S , /- p
  • 77.
    1 p C D[ U +)( 0 S S , /- p
  • 78.
    1 p C D[ U +)( 0 S S , /- p
  • 79.
    1 p C D[ U +)( 0 S S , /- p
  • 80.
    1 p C D[ U +)( 0 S S , /- p
  • 81.
    1 p C D[ U +)( 0 S S , /- p
  • 82.
    1 p C D[ U +)( 0 S S , /- p
  • 83.
    1 p C D[ U +)( 0, /- S S +)( 0 S S , /- p
  • 84.
    1 p C D[ U +)( 0, /- S S +)( 0 S S , /- p
  • 85.
    1 p C D[ U +)( 0, /- S S +)( 0 S S , /- p
  • 86.
    1 p C D[ U +)( 0, /- S S +)( 0, /- +)( 0 S S , /- p S e e . 0-2 9 9 9 ,- , 0-2 9 9 9 . 9 ,- , 9 e ] [ er s
  • 87.
    1 C D [U 1 e ] [ 1 ] [< UK U[ S [FG U[ [H [ U[ LUK 2 1 ] [ y int pivotFind(int list[], int start, int end) { int pivot = list[start], low = start+1, high = end; do { while (low <= high && list[low] < pivot) low++; while (low <= high && list[high] > pivot) high--; if (low < high) swap(&list[low], &list[high]); }while(low < high); swap(&list[start], &list[high]); return high; }
  • 88.
    1 C D [U y 1 1 D [ U[ S [FG U[ [H [ U[ LUK 2 1 void quickSort(int list[], int start, int end) { if (start < end) { int pivotPosition = pivotFind(list, start, end); quickSort(list, start, pivotPosition-1); quickSort(list,pivotPosition+1, end); } }
  • 89.
    1 S IH M U [ U C D [ U void qsort( void *base, size_t num, size_t width, int (*compare) (const void *, const void *) ); [H [ HKK L M HU H H [ L U IL M LSL LU[ M HU H H aL M [ L LSL LU[ M HU H H U I [L H L M U [ U [ H[ H L [ LSL LU[ HUK L[ U U[L L ]HS L KL]LS L SK SL LU[ [ H L M U [ U L[ U ]HS L 3 1 LU LSL LU[ ( SL [ HU LSL LU[ ) 1 LU LSL LU[ ( L HS [ LSL LU[ ) 4 1 LU LSL LU[ ( LH[L [ HU LSL LU[ )
  • 90.
    ( ) + , - / 0 y s p b y HKk e y o o h y 1 h HK D [ U y / ) ,
  • 91.
    ( ) + , - / 0 y s p b y HKk e y o o h y 1 h HK D [ U y / ) ,
  • 92.
    ( ) + , - / 0 y s p b y HKk e y o o h y 1 h HK D [ U y / ) ,
  • 93.
    ( ) + , - / 0 y s p b y HKk e y o o h y 1 h HK D [ U y /) , /) ,
  • 94.
    y 1 p HKD [ U y z p ( p ( p ( ) + , - / 0 )/ 0 0 /( -) ) / )-
  • 95.
    y 1 p HKD [ U y z p ( p ( p ( ) + , - / 0 )/ 0 0 /( -) ) / )-
  • 96.
    y 1 p HKD [ U y z p ( p ( p ( ) + , - / 0 )/ 0 0 /( -)) / )-
  • 97.
    y 1 p HKD [ U y z p ( p ( p ( ) + , - / 0 )/ 0 0 /( -)) / )-
  • 98.
    ( ) + , - / 0 y 1 p HKD [ U y z p ( p ( p ( ) + , - / 0 )/0 0/( -) ) /)-
  • 99.
    ( ) + , - / 0 y 1 p HKD [ U y z p ( p ( p ( ) + , - / 0 )/ 0 0 /( -) ) / )-
  • 100.
    ( ) + , - / 0 y 1 p HKD [ U y z p ( p ( p ( ) + , - / 0 )/ 00 /(-) )/)-