Skip to content

Commit 61458c8

Browse files
committed
first commit
0 parents  commit 61458c8

File tree

6 files changed

+302
-0
lines changed

6 files changed

+302
-0
lines changed

binarysearch.py

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
def BinarySearch(l,key):
2+
low=0
3+
high=len(l)-1
4+
i=0
5+
while(low <= high):
6+
i = i+1
7+
mid = low + ((high-low)>>1)
8+
if(l[mid] < key):
9+
low = mid + 1
10+
elif (l[mid] > key):
11+
high = mid -1
12+
else:
13+
print "use %d times" % i
14+
return mid
15+
return -1
16+
17+
if __name__ == "__main__":
18+
l=[1,4,5,6,7,8,9,44,333,2233]
19+
print l
20+
print BinarySearch(l,4)
21+
print BinarySearch(l,44)
22+
print BinarySearch(l,8)
23+
print BinarySearch(l,2233)
24+
print BinarySearch(l,77)
25+

btree.py

Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
class BTree:
2+
def __init__(self,value):
3+
self.left=None
4+
self.data=value
5+
self.right=None
6+
7+
def insertLeft(self,value):
8+
self.left=BTree(value)
9+
return self.left
10+
11+
def insertRight(self,value):
12+
self.right=BTree(value)
13+
return self.right
14+
15+
def show(self):
16+
print self.data
17+
18+
def preorder(node):
19+
if node.data:
20+
node.show()
21+
if node.left:
22+
preorder(node.left)
23+
if node.right:
24+
preorder(node.right)
25+
26+
def inorder(node):
27+
if node.data:
28+
if node.left:
29+
inorder(node.left)
30+
node.show()
31+
if node.right:
32+
inorder(node.right)
33+
34+
def postorder(node):
35+
if node.data:
36+
if node.left:
37+
postorder(node.left)
38+
if node.right:
39+
postorder(node.right)
40+
node.show()
41+
42+
if __name__ == "__main__":
43+
44+
Root=BTree("root")
45+
A=Root.insertLeft("A")
46+
C=A.insertLeft("C")
47+
D=C.insertRight("D")
48+
F=D.insertLeft("F")
49+
G=D.insertRight("G")
50+
B=Root.insertRight("B")
51+
E=B.insertRight("E")
52+
53+
print "pre-traversal"
54+
preorder(Root)
55+
56+
print "in-traversal"
57+
inorder(Root)
58+
59+
print "post-traversal"
60+
postorder(Root)
61+
62+

graph.py

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
def searchGraph(graph,start,end):
2+
results=[]
3+
generatePath(graph,[start],end,results)
4+
results.sort(lambda x,y:cmp(len(x),len(y)))
5+
return results
6+
7+
def generatePath(graph,path,end,results):
8+
state=path[-1]
9+
if state == end:
10+
results.append(path)
11+
else:
12+
for arc in graph[state]:
13+
if arc not in path:
14+
generatePath(graph,path+[arc],end,results)
15+
16+
17+
if __name__ == "__main__":
18+
Graph={
19+
'A':['B','C','D'],
20+
'B':['E'],
21+
'C':['D','F'],
22+
'D':['B','E','G'],
23+
'E':[],
24+
'F':['D','G'],
25+
'G':['E']
26+
}
27+
r = searchGraph(Graph,'A','D')
28+
print "A to D"
29+
for i in r:
30+
print i
31+
32+
r=searchGraph(Graph,'A','E')
33+
print "A to E"
34+
for i in r:
35+
print i

queue.py

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
class Queue:
2+
def __init__(self,size=20):
3+
self.queue=[]
4+
self.size=size
5+
self.end=-1
6+
7+
def setSize(self,size):
8+
self.size=size
9+
10+
def In(self,element):
11+
if self.end < self.size -1:
12+
self.queue.append(element)
13+
self.end = self.end + 1
14+
else:
15+
raise "QueueFull"
16+
17+
def Out(self):
18+
if self.end != -1:
19+
element = self.queue[0]
20+
self.queue=self.queue[1:]
21+
self.end = self.end-1
22+
return element
23+
else:
24+
raise "QueueEmpty"
25+
26+
def End(self):
27+
return self.end
28+
29+
def empty(self):
30+
self.queue=[]
31+
self.end=-1
32+
33+
if __name__ == "__main__":
34+
35+
queue=Queue()
36+
for i in range(10):
37+
queue.In(i)
38+
print queue.End()
39+
40+
for i in range(10):
41+
print queue.Out()
42+
43+

sort.py

Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
class BTree:
2+
def __init__(self,value):
3+
self.left=None
4+
self.data=value
5+
self.right=None
6+
7+
def insertLeft(self,value):
8+
self.left=BTree(value)
9+
return self.left
10+
11+
def insertRight(self,value):
12+
self.right=BTree(value)
13+
return self.right
14+
15+
def show(self):
16+
print self.data
17+
18+
def inorder(node):
19+
if node.data:
20+
if node.left:
21+
inorder(node.left)
22+
node.show()
23+
if node.right:
24+
inorder(node.right)
25+
26+
27+
def rinorder(node):
28+
if node.data:
29+
if node.right:
30+
rinorder(node.right)
31+
node.show()
32+
if node.left:
33+
rinorder(node.left)
34+
35+
def insert(node,value):
36+
if value > node.data:
37+
if node.right:
38+
insert(node.right,value)
39+
else:
40+
node.insertRight(value)
41+
else:
42+
if node.left:
43+
insert(node.left,value)
44+
else:
45+
node.insertLeft(value)
46+
47+
48+
if __name__ == "__main__":
49+
50+
l=[88,11,2,33,22,4,55,33,221,34]
51+
Root=BTree(l[0])
52+
node=Root
53+
for i in range(1,len(l)):
54+
insert(Root,l[i])
55+
56+
print "1---->10"
57+
inorder(Root)
58+
print "10--->1"
59+
rinorder(Root)
60+
61+
62+
63+
64+
65+
66+
67+
68+
69+
70+
71+
72+
73+
74+
75+
76+
77+
78+

stack.py

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
class Stack:
2+
def __init__(self,size=20):
3+
self.stack= []
4+
self.size= size;
5+
self.top= -1
6+
7+
def setSize(self,size):
8+
self.size=size;
9+
10+
def push(self,element):
11+
if self.isFull():
12+
raise "StackOverflow"
13+
else:
14+
self.stack.append(element)
15+
self.top = self.top + 1
16+
17+
def pop(self):
18+
if self.isEmpty():
19+
raise "StackUnderflow"
20+
else:
21+
element=self.stack[-1]
22+
self.top=self.top-1;
23+
del self.stack[-1]
24+
return element
25+
26+
def Top(self):
27+
return self.top
28+
29+
def empty(self):
30+
self.stack=[]
31+
self.top=-1
32+
33+
def isEmpty(self):
34+
if self.top == -1:
35+
return True
36+
else:
37+
return False
38+
39+
def isFull(self):
40+
if self.top == self.size-1:
41+
return True
42+
else:
43+
return False
44+
45+
if __name__ == "__main__":
46+
47+
stack=Stack()
48+
49+
for i in range(10):
50+
stack.push(i)
51+
print stack.Top()
52+
53+
for i in range(10):
54+
print stack.pop()
55+
56+
stack.empty()
57+
print stack.Top()
58+
59+

0 commit comments

Comments
 (0)