본문 바로가기

[Study & Job]/[기타]

PYTHON으로 구현한 알고리즘

버블소팅


 #!/usr/bin/python
 import random
 
 def bubble_sort(random_list):
   for start_index in range( len(random_list)-1 ):
     for index in range( 1, len(random_list) - start_index ):
       if random_list[index-1] > random_list[index]:
         temp = random_list[index-1]
         random_list[index-1] = random_list[index]
         random_list[index] = temp
 
 def Main():
   list = []
   for i in range(10):
     list.append( random.randint(1,10) )
 
   print "< Before Sort >"
   print list
 
   bubble_sort(list) # now sorting!
   print "< After Sort >"
   print list

Main()


-퀵소트-


def quickSort(alist):

   quickSortHelper(alist,0,len(alist)-1)


def quickSortHelper(alist,first,last):

   if first<last:


       splitpoint = partition(alist,first,last)


       quickSortHelper(alist,first,splitpoint-1)

       quickSortHelper(alist,splitpoint+1,last)



def partition(alist,first,last):

   pivotvalue = alist[first]


   leftmark = first+1

   rightmark = last


   done = False

   while not done:


       while leftmark <= rightmark and \

               alist[leftmark] <= pivotvalue:

           leftmark = leftmark + 1


       while alist[rightmark] >= pivotvalue and \

               rightmark >= leftmark:

           rightmark = rightmark -1


       if rightmark < leftmark:

           done = True

       else:

           temp = alist[leftmark]

           alist[leftmark] = alist[rightmark]

           alist[rightmark] = temp


   temp = alist[first]

   alist[first] = alist[rightmark]

   alist[rightmark] = temp



   return rightmark


alist = [54,26,93,17,77,31,44,55,20]

quickSort(alist)

print(alist)

반응형