Answered # hi, need help with sorting

vegaseat 1,720 Discussion Starter hotteaboi bumsfeld 413 Discussion Starter hotteaboi Dani 1,477 Hey, so I wanna ask how I need to create a method who will remove word if in that word is 2 same chars. Example: "Potato" in this word there is a 2 "o" chars so this word will need to be removed. "Forum" in this word there is no ...

0

http://www.ee.umanitoba.ca/~pcard/371/assignment1.py

0

The Python snippet at:

http://www.daniweb.com/code/snippet452.html

contains a fair number of sorting algorithms, all geared to sort a list of integers. Pick one.

You can also pick Python's built in ultrafast sort called sorted(). For a good example of sorted() look at:

http://www.daniweb.com/code/snippet506.html

0

hi there, i was using quicksort method

but when it comes to leng() it gives me this error

and i have no idea how to fix it

C:\Python24>python quicksort.py 100

Traceback (most recent call last):

File "quicksort.py", line 55, in ?

end = len(list)-1

TypeError: len() of unsized object

0

Give me an example of your list.

Also, wouldn't use list as variable name since list() is built-in function, just as len().

0

im using quicksort algorithm but it seems to have a problem somethin is gone wrong with my prog. any help is greatly appreciated.... thanx

sorry about the indentation

```
#!/usr/bin/python
from sys import *
import random # for generating random numbers
import time # for timing each sort function with time.clock()
class Item:
def __init__(self,data,next):
self.data = data
self.next = next
def setNext(self,next):
self.next = next
def getNext(self):
return self.next
def getData(self):
return self.data
class List:
def __init__(self):
self.top = None
self.num = 0
def push(self,data):
self.top = Item(data,self.top)
self.num += 1
def howMany(self):
return self.num
def pop(self):
if self.top == None:
return None
d = self.top.getData()
self.top = self.top.getNext()
self.num-=1
return d
def add(self,n,data):
if n == 0:
self.push(n)
return
nx = self.top
for x in range(n):
l = nx
nx = nx.getNext()
if nx == None: break
l.next = Item(data,nx)
self.num+=1
def rem(self,n):
if n==0: # First item in list
d=self.top.getData()
if self.top == None: # No list ?
return None
self.top = self.top.getNext()
self.num-=1
return d
nx = self.top
for x in range(n):
l = nx
nx = nx.getNext()
if nx == None:
return None
d = nx.getData()
l.setNext(nx.getNext())
self.num-=1
return d
def val(self,n):
if n==0:
return self.top.getData()
nx = self.top
for x in range(n):
nx = nx.getNext()
if nx == None: return None
return nx.getData()
def printMe(self):
print '[',
n = self.top
while n != None:
d = n.getData()
print "%d," %(d),
n = n.getNext()
print ']'
def printMe2(self):
print '[',
for d in range(self.num):
d = self.val(d)
print "%d," %(d),
print ']'
#print self.num
print self.howMany()
#print r
print l.howMany()
#print int(sys.argv[1])
print r
#sort
#Partition Function for use within quick sort algorithm
def partition(self,r,start,end):
star=0
end=self.howMany-1
pivot = r[end] # Partition around the last value
bottom = start-1 # Start outside the area to be partitioned
top = end # Ditto
done = False
while not done: # Until all elements are partitioned...
while not done: # Until we find an out of place element...
bottom = bottom+1 # ... move the bottom up.
if bottom == top: # If we hit the top...
done = True # ... we are done.
break
if list[bottom] > pivot: # Is the bottom out of place?
list[top] = list[bottom] # Then put it at the top...
break # ... and start searching from the top.
while not done: # Until we find an out of place element...
top = top-1 # ... move the top down.
if top == bottom: # If we hit the bottom...
done = True # ... we are done.
break
if r[top] < pivot: # Is the top out of place?
r[bottom] = r[top] # Then put it at the bottom...
break # ...and start searching from the bottom.
r[top] = pivot # Put the pivot in its place.
return top # Return the split point
def quick_sort(self):
start=0
end=r-1
if start < end: # If there are two or more elements...
split = self.partition(r,start,end) # ... partition the sublist...
self.quick_sort(r, start, split-1) # ... and sort both halves.
self.quick_sort(r,split+1, end)
else:
return
def sort(self):
self.quick_sort(r, 0, self.howMany() - 1)
import random
import sys
def sortTest(size=100):
print "Checking to see if list is sorted:",
sorted = True
l = List()
for s in range(size):
l.push(random.randint(1,1000))
l.sort()
for s in range(size-1):
one = l.val(s)
two = l.val(s+1)
if one>two :
sorted = False
break
print sorted
if __name__ == "__main__":
r = random.randint(0,int(sys.argv[1]))
print "Running module tests..."
l = List()
print "Pushing values"
for d in range(r):
l.push(random.randint(0,r))
l.printMe()
print "Adding values"
for d in range(0,r,3):
l.add(d,d)
l.printMe2()
print "Popping values"
for d in range(r/3):
l.pop()
l.printMe()
print "How Many:",
print l.howMany()
for d in range(0,r,3):
l.rem(d)
l.printMe2()
print 'Sorting list'
l.sort()
l.printMe()
print "Running sort test"
sortTest()
```

0

isorry about the indentation

Indentation works when you wrap code in CODE tags ;)

*Edited 3 Years Ago by ~s.o.s~*: Formatting

This question has already been answered. Start a new discussion instead.

Recommended Articles

Hi. I have a form with list box : lst_product, datagridview : grd_order and button: btn_addline. lst_product has a list of product ids selected from database (MS Acess 2013) , grd_order is by default empty except for 2 headers and btn_addline adds rows to grd_order.

btn_addline :

`Private Sub btn_addline_Click(ByVal ...`

I don’t want at this stage work on a big separate project as I've already got plenty ...