-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathArrays_or_List.py
More file actions
126 lines (104 loc) · 2.89 KB
/
Arrays_or_List.py
File metadata and controls
126 lines (104 loc) · 2.89 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
import ctypes
class Array:
def __init__(self):
self.size = 1
self.n = 0
self.A = self.make_array(self.size)
def make_array(self, capacity):
return (capacity * ctypes.py_object)()
def append(self, value):
if self.n == self.size:
self.__resize(self.size * 2)
self.A[self.n] = value
self.n += 1
def __resize(self, new_capacity):
B = self.make_array(new_capacity)
self.size = new_capacity
for i in range(self.n):
B[i] = self.A[i]
self.A = B
def __str__(self):
result = ''
for i in range(self.n):
result = result + str(self.A[i]) + ', '
return '[' + result[:-2] + ']'
def __getitem__(self, index):
if 0 <= index < self.n:
return self.A[index]
else:
return 'Index Out Of Bounds'
def __len__(self):
return self.n
def pop(self):
if self.n == 0:
return "Empty array"
print(self.A[self.n - 1])
self.n -= 1
def clear(self):
self.n = 0
self.size = 1
def find(self, value):
for i in range(self.n):
if self.A[i] == value:
return i
return -1
def insert(self, pos, value):
if pos < 0 or pos > self.n:
return "Invalid position"
if self.n == self.size:
self.__resize(self.size * 2)
for i in range(self.n, pos, -1):
self.A[i] = self.A[i - 1]
self.A[pos] = value
self.n += 1
def delete(self, index):
if 0 <= index < self.n:
for i in range(index, self.n - 1):
self.A[i] = self.A[i+1]
self.n -= 1
def remove(self, value):
index = self.find(value)
if index != -1:
self.delete(index)
else:
return "Value not found"
def sort(self):
for i in range(self.n):
for j in range(i, self.n - i):
if self.A[i] > self.A[j]:
self.A[i], self.A[j] = self.A[j], self.A[i]
def min(self):
if self.n == 0:
return "Empty array"
min = self.A[0]
for i in range(self.n):
if self.A[i] < min:
min = self.A[i]
return min
def max(self):
if self.n == 0:
return "Empty Array"
max = self.A[0]
for i in range(self.n):
if self.A[i] > max:
max = self.A[i]
return max
def sum(self):
if self.n == 0:
return "Empty array"
sum = 0
for i in range(self.n):
sum += self.A[i]
return sum
if __name__ == "__main__":
arr = Array()
arr.append(1)
arr.append(2)
arr.append(3)
arr.append(4)
arr.pop()
arr.append(5)
arr.insert(1,6)
arr.delete(3)
arr.remove(10)
print(arr)