#!/usr/bin/python
# -*- coding: UTF-8 -*-
#arr = [1,3,2,4,8,6,7,5]
arr = [9,2,7,4,5,6,3,8,1,10]
l = len(arr)
print "print raw arr"
for i in range(l):
print arr[i],
print "\n bubble sort "
# bubble sort
for i in range(0,l-1):
for j in range(1,l-i):
if(arr[j-1]>arr[j]):
tmp = arr[j]
arr[j] = arr[j-1]
arr[j-1] = tmp
print "\n","iter ",i,":",
for k in range(l):
print arr[k],
arr = [1,3,2,4,8,6,7,5]
#arr = [9,2,7,4,5,6,3,8,1,10]
l = len(arr)
print "\n bubble sort + change flag"
flag = 1
# buble sort ,improve:add change flag
for i in range(0,l-1):
if(flag==0):
break;
flag = 0
for j in range(1,l-i):
if(arr[j-1]>arr[j]):
tmp = arr[j-1];
arr[j-1] = arr[j]
arr[j] = tmp
flag = 1
print "\n","iter ",i,":",
for k in range(l):
print arr[k],
#arr = [1,3,2,4,8,6,7,5]
arr = [9,2,7,4,5,6,3,8,1,10]
l = len(arr)
print "\n bubble sort + two direction"
low = 0
high = l-1
iter = -1
while(low<high):
iter +=1
for i in range(low,high):
if(arr[i]>arr[i+1]):
tmp = arr[i+1]
arr[i+1] = arr[i]
arr[i] = tmp
high = high - 1
print "\n","iter ",iter,":",
for k in range(l):
print arr[k],
for i in range(high,low,-1):
if(arr[i]<arr[i-1]):
tmp = arr[i-1]
arr[i-1] = arr[i]
arr[i] = tmp
low = low+1
print "\n","iter ",iter,":",
for k in range(l):
print arr[k],
print "\n---->quicksort"
#-------- quick sort
def partition(array,left,right):
key = array[left]
while(left<right):
while((left<right) & (array[right]>=key)):
right = right -1
array[left] = array[right]
while((left<right) & (array[left]<=key)):
left = left +1
array[right] = array[left]
array[left] = key
print "\n---partition:",key
for k in range(len(array)):
print array[k],
return left
def quicksort(array,left,right):
k = 0
if(left<right):
k = partition(array,left,right)
quicksort(array,left,k-1)
quicksort(array,k+1,right)
arr = [9,2,7,4,5,6,3,8,1,10]
l = len(arr)
print "print raw arr"
for i in range(l):
print arr[i],
quicksort(arr,0,l-1)
冒泡以及快速排序
最新推荐文章于 2022-06-13 16:34:44 发布