1
+ function ArrayList ( ) {
2
+
3
+ var array = [ ] ;
4
+
5
+ this . insert = function ( item ) {
6
+ array . push ( item ) ;
7
+ } ;
8
+
9
+ this . toString = function ( ) {
10
+ var s = array [ 0 ] ? array [ 0 ] : '' ;
11
+ for ( var i = 1 ; i < array . length ; i ++ ) {
12
+ s += ', ' + array [ i ] ;
13
+ }
14
+ return s ;
15
+ } ;
16
+
17
+ this . sequentialSearch = function ( item ) {
18
+
19
+ for ( var i = 0 ; i < array . length ; i ++ ) {
20
+ if ( item === array [ i ] ) {
21
+ return i ;
22
+ }
23
+ }
24
+
25
+ return - 1 ;
26
+ } ;
27
+
28
+ this . findMaxValue = function ( ) {
29
+ var max = array [ 0 ] ;
30
+ for ( var i = 1 ; i < array . length ; i ++ ) {
31
+ if ( max < array [ i ] ) {
32
+ max = array [ i ] ;
33
+ }
34
+ }
35
+
36
+ return max ;
37
+ } ;
38
+
39
+ this . findMinValue = function ( ) {
40
+ var min = array [ 0 ] ;
41
+ for ( var i = 1 ; i < array . length ; i ++ ) {
42
+ if ( min > array [ i ] ) {
43
+ min = array [ i ] ;
44
+ }
45
+ }
46
+
47
+ return min ;
48
+ } ;
49
+
50
+ this . binarySearch = function ( item ) {
51
+ this . quickSort ( ) ;
52
+
53
+ var low = 0 ,
54
+ high = array . length - 1 ,
55
+ mid , element ;
56
+
57
+ while ( low <= high ) {
58
+ mid = Math . floor ( ( low + high ) / 2 ) ;
59
+ element = array [ mid ] ;
60
+ if ( element < item ) {
61
+ low = mid + 1 ;
62
+ } else if ( element > item ) {
63
+ high = mid - 1 ;
64
+ } else {
65
+ return mid ;
66
+ }
67
+ }
68
+ return - 1 ;
69
+ } ;
70
+
71
+ this . quickSort = function ( ) {
72
+ quick ( array , 0 , array . length - 1 ) ;
73
+ } ;
74
+
75
+ var partition = function ( array , left , right ) {
76
+
77
+ var pivot = array [ Math . floor ( ( right + left ) / 2 ) ] ,
78
+ i = left ,
79
+ j = right ;
80
+
81
+ while ( i <= j ) {
82
+ while ( array [ i ] < pivot ) {
83
+ i ++ ;
84
+ }
85
+
86
+ while ( array [ j ] > pivot ) {
87
+ j -- ;
88
+ }
89
+
90
+ if ( i <= j ) {
91
+ swapQuickStort ( array , i , j ) ;
92
+ i ++ ;
93
+ j -- ;
94
+ }
95
+ }
96
+
97
+ return i ;
98
+ } ;
99
+
100
+ var swapQuickStort = function ( array , index1 , index2 ) {
101
+ var aux = array [ index1 ] ;
102
+ array [ index1 ] = array [ index2 ] ;
103
+ array [ index2 ] = aux ;
104
+ } ;
105
+
106
+ var quick = function ( array , left , right ) {
107
+
108
+ var index ;
109
+
110
+ if ( array . length > 1 ) {
111
+
112
+ index = partition ( array , left , right ) ;
113
+
114
+ if ( left < index - 1 ) {
115
+ quick ( array , left , index - 1 ) ;
116
+ }
117
+
118
+ if ( index < right ) {
119
+ quick ( array , index , right ) ;
120
+ }
121
+ }
122
+ return array ;
123
+ } ;
124
+ }
0 commit comments