> 94bjbjߍ "9+<&fM&O&O&O&O&O&O&((*JO&-O&|&M&M&%kpA&0&,++%%e:
Sorting Algorithms
The first section
Peace, mercy and blessings of God. Welcome to this lesson.
My name is Amer Ahmed Jose, a computer software developer; please accept my sincere greetings from Sultan bin Abdul Aziz Center for Science and Technology (Scitech), Al-Khobar, Kingdom of Saudi Arabia.
This lesson is about a very important topic. As you know, we live in the era of information technology and computing, where data increases steadily and enormously, increasing the demand for sorting and processing data in order to benefit from this data .
Arranging a set of elements is one of several problems faced by programmers, for example, arranging students in alphabetical order or according to their scores in a certain subject, or by their GPA to recognize the outstanding students.
Have you ever wondered how the order of a set of elements is?
Is it possible to write a systematic method of arrangement as steps or programming codes that can be fed to the computer to do such a process?
Think about this issue and I will get back to you after a few minutes.
The second section
Welcome again, I think you have found one way or more.
Finding a systematic method to solve a problem is called the solution algorithm.
An algorithm is a step-by-step mathematical and logical procedure, needed to solve a problem.
It is called an algorithm, after the Muslim mathematician, Muhammad ibn Musa al-Khwarizmi, who lived during the Abbasid Caliph al-Ma'mun rule, and administered the House of Wisdom in the ninth century AD. He was the author of "Hisab al-jabr w'al-muqabala", and by translating it into Latin languages, the words Algebra and zero "cipher" have been added to those languages. He also was a major participant in solving quadratic equations. That is when the word "Algorithm" was added to Latin languages.
Let us introduce one of the Sorting Algorithms:
Bubble Sort Algorithm:
Suppose we have a set of numbers you need to arrange:
1234587512
This method involves the following steps:
1. Compare the first element with the second one.
2. Switch the two elements if the first is greater than the second.
3. Compare the second element to the third, and swap if the second is larger than the third.... Repeat this process up to the last two elements in the series.
4. By applying this process, we get the largest element at the end of the list.
5. The process is repeated for the rest of the elements.
Example:
Let us consider the following set of numbers:
1234587512
Try to arrange them in this way and I will get back to you.
The third section
Welcome again. Let us solve the previous problem together:
Our example:
1234587512
Compare 8 and 7, and swap them because 8 is greater than 7
78512Compare 8 and 5, and swap them because 8 is greater than 5
75812Compare 8 and 1, and because 8 is greater than 1, we swap them.
75182Compare 8 and 2, and also we swap them because 8 is greater than 2.
75128Thus, we have obtained the largest element 8 at the end of the set.
The process is repeated to arrange the rest of the elements through the following steps
Compare 7 and 5, and swap them because 7 is greater than 5
57128
Compare 7 and 1, and swap them because 7 is greater than 1
51728
Compare 7 and 2, and swap them because 7 is greater than 2
51278By this, we have placed 7 in the right order.
Back again, compare 5 and 1, and swap them because 5 is greater than 1
15278
Compare 5 and 2, and swap them because 5 is greater than 2
12578By this, we have placed 5 in the right order.
Go back to the beginning and compare 1 and 2 and since 2 is greater than 1, there is no need for swapping. Thus, our list of elements has been arranged in the right order.
12578This method is the Bubble Sort Algorithm and it is named so because the sorted element is moved until it reaches the right place in the set just like air bubble moves up in the water.
Now Do you think that there is a better way to order?
Let us introduce another method called:
Selection Sorting Algorithm:
Perhaps it was one of the ways in which you came up with in the first activity.
This method includes the following steps:
1. Find the smallest element in a list of elements
2. Swap it with the first element in the list.
3. Repeat the previous two steps with the remaining elements (Starting from the second element, followed by the third one and so on)
Try to sort the previous set of elements using this method and I will get back to you after a few minutes.
The fourth section
Welcome again. Now, we sort the elements according to selection sorting algorithm:
1. We choose the smallest element in the list which is 1 in this case.
2. We swap it with the first element in the list (8)
1234517582
Repeat the previous steps 1, and 2 to sort the rest of the elements
Swap 2 with 7
12587
The element 5 keeps its place because it is smaller
12587
Swap 7 with 8
12578
By doing the last step, we have the list in order.
Note that the sorting of the elements was done in the opposite direction, from the smallest element to the largest, and that the elements were switched only to put them in their final position, and this is why selection sorting algorithm is faster than bubble sorting algorithm.
Now, would you be surprised if I told you that there is even a faster way than the previous methods?!
But it is a little more complicated.
It's quicksort algorithm:
It is based on the following steps:
1. Select an item from the list randomly .This element is called the pivot (for example, the element in the middle)
2. Put smaller elements in a sub-list called smaller elements (L) to the right of the pivot.
3. Put larger elements in a sub-list called larger elements (G) to the left of the pivot.
(And thus ensure putting the pivot in the right place)
4. Repeat the steps for the two sub-lists L and G are then recursively* sorted
* Recursively means that the repeated process of dividing a problem into similar and simpler divisions, to find to the solution.
You can refer to the Towers of Hanoi prepared by Dr. Richard Larson on Blossoms for more information about this important and interesting lesson.
Now, I'm going to use the quicksort method to sort the previous list, but after a short break
(Break for five seconds)
Section 5
Let's solve the example using the quicksort method
1234587512
1. I will choose an element randomly and let it be the third element (5) as a pivot.
87512
2. Put the elements smaller than 5 (1 and 2) in the sub-list of the smaller elements (to the right of the pivot)
12
3. Put the elements greater than 5 (7and 8) in the sub-list of the larger elements (to the left of the pivot)
87The list becomes as follows:
12587
4. We repeat the previous steps for the two sub-lists:
A Sort the small sub-list: We select (1) as a pivot.
B A smaller list does not exist in this case, and the large list consists of only one element so it is already sorted.
C The sub-list becomes:
12
Sort the large sub-list as follows:
A -We select (7) as a pivot.
B - A smaller list does not exist in this case, either. The large list consists of only one element (8) so it is already sorted, and we place it to the left of the pivot.
C The sub-list becomes:
78
We combine the small sub-list, pivot, and large sub-list, to have the final list in order:
12578
I will repeat the sequence of steps graphically and briefly
The elements are 8, 7, 5, 1, & 2.
Pivot is 5.
1 and 2 is the small sub-list.
8 and 7 is the large sub-list.
Sort the small sub-list: 1 is the pivot and 2 is the large list to left of the pivot.
Sort the large sub-list: 7 is the pivot and 8 is the large list to left of the pivot.
The final list will be in order: 12 578
Perhaps you think that this method is not better than the previous two algorithmic methods, and for that I suggest that you sort the following in cooperation with your teacher:
123456789101378495260Meet you after a few minutes
Section VI
Welcome again. I hope you have enjoyed sorting the example according to the quicksort algorithm, let's sort this list together:
123456789101378495260
We choose the pivot to be (4) for example, (the fifth element in the list)
First, we form the small sub-list to the right of the pivot, which is
1320
And then, we form the large sub-list to the left of the pivot, which is
78956
So that the following list is produced:
1320478956
Sort the small sub-list and the large sub-list in the same way by choosing 2 as a pivot for example for the small sub-list and 8 for the large one.
1023475689
3 is only element so it is already sorted, and so is the element 9.
1023475689
Now, sort the remaining two sub-lists:
The sub-list:
10And the sub-list:
756In the same way
1023475689
So that the list becomes finally in order:
0123456789
But....... What if I asked you to sort a list of more than 100 elements for example, or perhaps a thousand or ten thousands?
Is it possible to compare these algorithms to tell which one is the fastest algorithm and the best to use?
Think about a solution, and I will come back to you shortly.
Section VII
How can sort a list of 100 elements for example?
How can we even sort a list of perhaps thousands or millions of records to speed up the search in the databases?
Yes, here comes the role of the computer to accomplish these tasks on our behalf.
As you have noticed, the algorithmic steps are simple and few. They can be easily programmed in any programming language you have already studied, if you have knowledge required for dealing with lists or matrices.
This is an example of a program that performs the sorting according to the three algorithms which we have reviewed together. It orders three identical sets of random lines of different lengths simultaneously to show us which algorithm is faster as well as a visual representation of the sorting steps.
We run the program. As we can see, there are three lists which will be sorted according to the three algorithms and I added extra time to delay the process so that we can see the sorting steps.
We press the Start button to start the sorting process. We find that the first list has been sorted very quickly by the quicksort algorithm and then followed by selection sorting algorithm while the bubble sort algorithm is still working slowly and raising each element gradually resembling a bubble of air moving up in water to reach the top.
So quicksort algorithm is the fastest method.
I hope you have enjoyed this lesson and that it motivates you to learn more about mathematics, programming, and writing algorithms that can be useful to solve other problems that you may confront in your daily life.
If you need any help or if you have any questions, you may e-mail me using the following e-mail address:
amer[at] salaamsoft.com
Good-bye and peace be upon you and God's mercy and blessings.
O P 6
@
H78Md_ijtu34BLMhxhNUhIhNUCJaJhIhNUCJaJhIhNU*hIhNUCJaJhL@hNU5\h9hNUhdhNUhNUOJQJhNU6]h[jhNUhzWhNUh-GhNUhhNUhNUhoK1%`* )
T*+>?v%
LMd$d$Ifa$gdNUgdNU1 $d$Ifa$gdNUkd$$IflrJl"
tV0644
lap2$d$Ifa$gdNU
1,,,gdNUkd$$IflrJl"
tV0644
lap2
Q@y$d$Ifa$gdNUgdNU1 $d$Ifa$gdNUkd$$IflrJl"
tV0644
lap2$d$Ifa$gdNU1,,,gdNUkd$$IflrJl"
tV0644
lap2R_acegi$d$Ifa$gdNUgdNU ijln1 $d$Ifa$gdNUkd$$IflrJl"
tV0644
lap2nprt$d$Ifa$gdNUtuv1,,gdNUkd$$IflrJl"
tV0644
lap2$d$Ifa$gdNU"gdNUkd^$$IflrJl"
tV0644
lap2$d$Ifa$gdNUBgdNUkdL$$IflrJl"
tV0644
lap2BDFHJL$d$Ifa$gdNULMkdF$$IflrJl"
tV(0644
lap2M$d$Ifa$gdNUgdNUtuvwx|~
;<Omn⑭hsLhNUh3ahNUZhNUCJaJ&hIhNU5B*CJZ\aJphh3ahNUhsrhNUCJaJhsrhNUCJZaJhIhNUCJZaJhIhNUCJaJhNUhIhNU#hIhNU5B*CJ\aJph3kdL$$IflrJl"
tV20644
lap28stvxz|~$d$Ifa$gdNUgdNU ~ $a$gdNUkd^ $$IflrJl"
tV0644
lap2$d$Ifa$gdNU$a$gdNUkdQ
$$IflrJl"
tV0644
lap2
$d$Ifa$gdNU$a$gdNU
kdP$$IflrJl"
tV(0644
lap2
;<$d$Ifa$gdNU$a$gdNUgdNU $a$gdNUkd[$$IflrJl"
tV0644
lap2$d$Ifa$gdNU$a$gdNUgdNUkdN
$$IflrJl"
tV0644
lap2$d$Ifa$gdNU$a$gdNUs"gdNUkdM$$IflrJl"
tV0644
lap206<P\brxy
KLMNOPQVefghinopѼ~~~hIhNU5B*Z\phhIhNU5B*\phhIhNUZhIhNUB*ZphhIhNUB*phhIhNU*hIhNUCJZaJ*hIhNUCJaJhL@hNU5\hNU5\hLshNUhsLhNUhNU.AkR%lm$d$Ifa$gdNUgdNU1 $d$Ifa$gdNUkd;$$IflrJl"
tV0644
lap2$d$Ifa$gdNUkd$$IflrJl"
tV(0644
lap2
$d$Ifa$gdNUgdNUkd-$$IflrJl"
tV20644
lap2KMOQSU$d$Ifa$gdNUgdNUUVWgdNUkdM$$IflrJl"
tV0644
lap2Wegikmo$d$Ifa$gdNUgdNUopkdU$$IflrJl"
tV20644
lap2pq"GaW: M!!!!!!""" ""
"$d$Ifa$gdNUgdNUOPrs"
""""o"s"u"y"z""""a#e#f########$$$$$$$%%%%%&&&&&ʻʻ}}&hIhNU5B*CJZ\aJph#hIhNU5B*CJ\aJph hIhNUB*CJZaJphh1(hNUhIhNUB*CJaJphhIhNUCJaJhIhNUhIhNUCJaJhgihNUh
hNUhNUht-hNU1
""""1 $d$Ifa$gdNUkdu$$IflrJl"
tV0644
lap2""""$d$Ifa$gdNU"""o"1,,gdNUkda$$IflrJl"
tV0644
lap2o"q"s"u"w"y"$d$Ifa$gdNUy"z"{"gdNUkd?$$IflrJl"
tV0644
lap2{"""""""a#c#e#ckdG$$Ifl0J
tV0644
lap$d$Ifa$gdNUgdNU e#f#######wraaaaa$d$Ifa$gdNUgdNUkd$$Ifl0J
tV0644
lap#####1,,,gdNUkd$$IflrJl"
tV0644
lap2#x$$$$$$$$Nkdz$$Ifl0 ]
tV0644
l`
a]p$d$Ifa$gdNUgdNU$%%%%%%%&NkdR$$Ifl0 ]
tV0644
l`
a]p$d$Ifa$gdNUgdNU&&& &&
&&&K&M&o&{&&&'f''?(A(C(E(G(I(K(M(O(Q(gdNUFfW$d$Ifa$gdNU&&
&&K&L&&&&&?(F(G(H(I(J(K(N(O(P(Q(S(T(U(i(j()))))) )#)$)%)&)()))*)>)?)@)N)[)\)])l)o)))))))#*,*ιβΫңңңңңңҘңңңңңңҘΑΑΑΑΑΘΘhg/hNUhIhNUCJaJhIhNUZh&1hNUh6hNU(j@hIhNUCJUaJmHnHuhNUhIhNU&hIhNU5B*CJZ\aJph#hIhNU5B*CJ\aJph8Q(T(U(W(Y([(](_(a(c(e(g(i(j((((()))))) )gdNUFf4$d$Ifa$gdNUFf0$d$Ifa$gdNU )")$)&)))*),).)0)2)4)6)8):)<)>)?)@)))))))gdNUFf<$d$Ifa$gdNUFf8$d$Ifa$gdNU)))#*%*'*E@@//$d$Ifa$gdNUgdNUkd.?$$IfTl\J
tV0644
lap(T'*)*+*-*$d$Ifa$gdNU,*-*.*W*j*k*l*{*|***+++ +++++++\+`+a+b+c+d+f+l+n+o+p+q++++++++++++++ݱݝtݝݝ&hIhNU5B*CJZ\aJph)*hIhNU5B*CJZ\aJph&*hIhNU5B*CJ\aJph#hIhNU5B*CJ\aJph*hIhNUCJaJhR<hNUh&1hNUhIhNUCJaJhNUhIhNUhIhNUCJZaJ--*.*/*W*-((gdNUkd@$$IfTlrJR
tV0644
lap2TW*Y*[*]*_*a*c*e*g*i*k*l*m*++++ ++
+++++++\+FfGgdNUFfB$d$Ifa$gdNU\+^+`+b+d+f+h+j+l+n+p+q+r+++++gdNUFfK$d$Ifa$gdNU+++++++jeeTTT$d$Ifa$gdNUgdNUkdO$$IfTl0J
tV
0644
lapT+++++++NI8888$d$Ifa$gdNUgdNUkdO$$IfTlFV
tV0644
lapT+++++++++,,,,,!,#,%,',),+,,,-,,-R-^--FfGWgdNUFfoR$d$Ifa$gdNU++++,,,,,",#,*,+,,,e-f-----111194̺캦̟̟̟̘̘hNhNUh9K=hNU&hIhNU5B*CJZ\aJph#hIhNU5B*CJ\aJphhNUhIhNU)*hIhNU5B*CJZ\aJph&*hIhNU5B*CJ\aJph-..T.*/X01r22x3338494gdNU
1h/ =!"#$%$$If!vh55555#v:Vl
tV065//p2$$If!vh55555#v:Vl
tV065/p2$$If!vh55555#v:Vl
tV065//p2$$If!vh55555#v:Vl
tV065/p2$$If!vh55555#v:Vl
tV065//p2$$If!vh55555#v:Vl
tV065/p2$$If!vh55555#v:Vl
tV065p2$$If!vh55555#v:Vl
tV065p2$$If!vh55555#v:Vl
tV(065p2$$If!vh55555#v:Vl
tV2065p2$$If!vh55555#v:Vl
tV065p2$$If!vh55555#v:Vl
tV065p2 $$If!vh55555#v:Vl
tV(065p2$$If!vh55555#v:Vl
tV065p2$$If!vh55555#v:Vl
tV065p2$$If!vh55555#v:Vl
tV065p2$$If!vh55555#v:Vl
tV065/p2$$If!vh55555#v:Vl
tV(065/p2$$If!vh55555#v:Vl
tV2065/p2$$If!vh55555#v:Vl
tV065/p2$$If!vh55555#v:Vl
tV2065/p2$$If!vh55555#v:Vl
tV065//p2$$If!vh55555#v:Vl
tV065/p2$$If!vh55555#v:Vl
tV065/p2$$If!vh55#v:Vl
tV065/p$$If!vh55#v:Vl
tV065/p$$If!vh55555#v:Vl
tV065/p2$$If]!vh55#v:Vl
tV065/`
a]p$$If]!vh55#v:Vl
tV065/`
a]p+$$If!vh55555#v:Vl
tV2065/`
p2kd*$$IflrJl"
tV20644
l`
ap2bDd
oop
s>A?Picture 1"b
B<\;s^~)6znr
B<\;s^~)6PNG
IHDRT8#nsRGBgAMAa pHYsodIDATx^m=]H_.!'W|H>pH:!`F'jF$EJK3wvNPKIC(p0Ti6Ti6Ti6Ti6Ti6Ti6Ti6Ti6lM_?}|5؊3
A`(e&2r;
֟TEІzmXZ^}X`GikZ`+X'ߜ!4Wv5M&t'H,%2c%l!$s_P3P@TeJ}cuKDt}:{|6'5hCF74{5cY#?Ϯ!tg=C`ic?a8k݂aMQ/[nKUg=69˺aPH갨5
iG#;@Y\q -g͟8H8 NfӾa1Mw^F~"/W{ك>5ϸZEAԍt~;\U9tMo|_G}ݘ/Gs~
6c;#?2J@{S]̟km˛.El%P{-#Wⴢ{}d>HEpQjN>%2wl?~8JMm?
se'{9ҒO]I,q9 _gEf;z og}z{ ]⥨bi?f~<_*)%U7sHnܝ/~=V:_}p$mP
,pTi6aoEy͎VV+S5._U~~%}=ױh17^Kz*
aC_~Ea KB*R9~J.?=P9ݒ9;,|Ȁ_^Ok`0o(!~vI[hPE*O)瀿;G[27~Ek\ ~
F
=$.i
H)PvCwwKh!~y?ׯ%mAB?P{nM>d/q'507X?-4["sCUޝ#-âɇ5_#gUrB]~{(;ʻs%sxwX4``QC쒶 oTR
~ހ#C(1@
N@
N@
8~v[.}|R߯Oe5TԷ!5^?,."MnJtHW|$/J֟y'U
. #ʴz&/%=qadWDΗA^JWp.E<ݚ'BEop6sOH*\u}b4H=su/GkmF<ʒQ$ශ8@U;n2<*de
dP@~z204=}ghL^^>*/_N=Y9IXam?!\J15ioi+ݾ~wˁ1g'"&Wr3'R\g]0%_ɿ!" ,v?G۷G_fx%ǚ2=]ꛒ[E?W&'G(d?ɟRx % 6. 79xb'Lope>fȟ4e6IŰ~k~_~x?e7\~7n"ĞL9Gɮw|CKucM?1#힌|8R C1V\y
?sNI^87ݗ>Y&ˡR]of;
yk$?~}9{=.N7~Obt75OYWBd
$",҉fɿƟ=Y+"0~~V[1%bH';%?kB䚨YFP/_FP (a(Щ#m
mKP-4+m4av`!ÔV`>,>BA+1CgF14??P.nQ0_:MRA8ߧ`%,OA_ToV0_ꕧ?//S-(MᘲR3ժfלf )9R[
kI.\UkA5L
~oU|E@A/X?M+ϵ>+}yF%nJ%>D|UYAWN_OR0/AU+F*k3Aj1*Ug\)g7y)
d
3Vm-YKT<
~S7ek/ۈH|65h`9Z@Ao5cS0_?[AoT0_|,>BA+O6+{D,|B
"$nM3naND|՜-e`>`lIAߠoXRR0K6?o_v_ \=ɫREP7oC/lgMʕ8
5[~k7PO$L<O߅|ACu<ѝ'Ag+/l:uȧ-Y_߅+
Zpu5wK6ܹÝ)}zx:r K/9a fYL]/mJg?X$)Kҟ'L=ldBǚo;Gbا&NLS(g2>_OSB}w4xhE5Z?Na *tE(:2n<KF<$[M::s.pßsgÜcwnE&ewk?"93ß1
c_FbFv<>W晔ö3= Op:.+OMQf.^֒ݞSX7v=ʯxw0(oR?X;nF~!Y(D`ZĆFTe 6( MC
~AlP@P/(.ؠ_P\4
,+-WAAh
XV[b
~Aq4\i(`YQCIENDB`V$$If!v
h555555555 5
#v#v
:Vl
tV0655
/
/
pdTkd/$$IfTl
Jx:
B
tV06((((44
lapdTH$$If!v
h555555555 5
#v#v
:Vl
tV0655
/
pdTkd3$$IfTl
Jx:
B
tV06((((44
lapdTV$$If!v
h555555555 5
#v#v
:Vl
tV0655
/
/
pdTkdh7$$IfTl
Jx:
B
tV06((((44
lapdTH$$If!v
h555555555 5
#v#v
:Vl
tV0655
/
pdTkdR;$$IfTl
Jx:
B
tV06((((44
lapdT$$If!vh5555#v#v:Vl
tV0655/p(T$$If!vh55555#v#v:Vl
tV0655/p2T$$If!v
h555555555 5
#v#v
:Vl
tV20655
/
pdTkd@$$IfTl
JF
N
tV206((((44
lapdT$$If!v
h555555555 5
#v#v
:Vl
tVZ0655
/
pdTkd\E$$IfTl
JF
N
tVZ06((((44
lapdT$$If!v
h555555555 5
#v#v
:Vl
tVd0655
/
pdTkd&J$$IfTl
JF
N
tVd06((((44
lapdT$$If!vh55#v:Vl
tV
065/pT$$If!vh555#v:Vl
tV065/pT$$If!v
h555555555 5
#v#v
:Vl
tVd0655
/
pdTkdP$$IfTl
JF
N
tVd06((((44
lapdT$$If!v
h555555555 5
#v#v
:Vl
tVd0655
/
pdTkdU$$IfTl
JF
N
tVd06((((44
lapdT666666666vvvvvvvvv666666>6666666666666666666666666666666666666666666666666hH6666666666666666666666666666666666666666666666666666666666666666662 0@P`p2( 0@P`p 0@P`p 0@P`p 0@P`p 0@P`p 0@P`p8XV~8XV~$OJPJQJ^J_HmH nH sH tH J`JNormaldCJ_HaJmH sH tH vv: Heading 1!$$$@&A$'5B*CJOJPJQJ\^JaJph6_DA D
Default Paragraph FontRi@R
0Table Normal4
l4a(k (
0No List\\:Heading 1 Char'5B*CJOJPJQJ\^JaJph6_NN: List Paragraph$A$^m$PK![Content_Types].xmlj0u$Nwc$ans@8JbVKS(.Y$8MVgLYS]"(U֎_o[gv;
f>KH|;\XV!]օ Oȥsh]Hg3߶PK!֧6_rels/.relsj0}Q%v/C/}(h"O
= C?hv=Ʌ%[xp{۵_Pѣ<1H0ORBdJE4b$q_6LR7`0̞O,En7Lib/SeеPK!kytheme/theme/themeManager.xmlM
@}w7c(EbˮCAǠҟ7՛K
Y,
e.|,H,lxɴIsQ}#Ր ֵ+!,^$j=GW)E+&
8PK!\theme/theme/theme1.xmlYOoE#F{o'NDuر i-q;N3'
G$$DAč*iEP~wq4;{o?g^;N:$BR64Mvsi-@R4mUb V*XX!cyg$w.Q"@oWL8*Bycjđ0蠦r,[LC9VbX*x_yuoBL͐u_.DKfN1엓:+ۥ~`jn[Zp֖zg,tV@bW/Oټl6Ws[R?S֒7 _כ[֪7 _w]ŌShN'^Bxk_[dC]zOլ\K=.:@MgdCf/o\ycB95B24SCEL|gO'sקo>W=n#p̰ZN|ӪV:8z1fk;ڇcp7#z8]Y/\{t\}}spķ=ʠoRVL3N(B<|ݥuK>P.EMLhɦM .co;əmr"*0#̡=6Kր0i1;$P0!YݩjbiXJB5IgAФa6{P g֢)҉-Ìq8RmcWyXg/u]6Q_Ê5H
Z2PU]Ǽ"GGFbCSOD%,p
6ޚwq̲R_gJSbj9)ed(w:/ak;6jAq11_xzG~F<:ɮ>O&kNa4dht\?J&l O٠NRpwhpse)tp)af]
27n}mk]\S,+a2g^Az
)˙>E
G鿰L7)'PK!
ѐ'theme/theme/_rels/themeManager.xml.relsM
0wooӺ&݈Э5
6?$Q
,.aic21h:qm@RN;d`o7gK(M&$R(.1r'JЊT8V"AȻHu}|$b{P8g/]QAsم(#L[PK-![Content_Types].xmlPK-!֧6/_rels/.relsPK-!kytheme/theme/themeManager.xmlPK-!\theme/theme/theme1.xmlPK-!
ѐ'
theme/theme/_rels/themeManager.xml.relsPK]
9+&,*+94/=IUZa
intBLM~
UWop
"""o"y"{"e###$&Q( ))'*-*W*\++++-94 !"#$%&'()*+,-.0123456789:;<>?@ABCDEFGHJKLMNOPQRSTVWXY[\]^_`bL#@0(
B
S ?;+;+ko il
#**;+W"()M-#0#7#8####$***;+::::NoY^`o(.^`.pL^p`L.@^@`.^`.L^`L.^`.^`.PL^P`L.NoY NUd R
_
a
c
e
g
i
j
l
n
p
r
t
u
v
BDFHJLMstvxz|~
<
m
KMOQSUVWegikmop
oqsuwyz{acefx
?ACEGIKMOQTUWY[]_acegij " $ & ) * , . 0 2 4 6 8 : < > ? #!%!'!)!+!-!.!/!W!Y![!]!_!a!c!e!g!i!k!l!m!"""" ""
"""""""\"^"`"b"d"f"h"j"l"n"p"q"""""""""""""""""""""""""#####!###%#'#)#+#,#;+DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD@(9+P@PP @UnknownGTimes New Roman5Symbol3Arial7Calibri? Courier New7Cambria"qh''@#
LZ
.a24+iI KQHP $P,/2!xxadminJanice Hall
Oh+'0`
(
4@HPX'adminNormal.dotmJanice Hall2Microsoft Macintosh Word@F#@H@H
@#
՜.+,0hp
'AramcoL+Title
!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcefghijklmnopqrstuvwxyz{|}~Root Entry FData
dWZ1Table$+WordDocument"SummaryInformation(DocumentSummaryInformation8CompObj`ObjectPool F Microsoft Word 97-2004 DocumentNB6WWord.Document.8