python 快速排序
#!/usr/bin/env python
# encoding:utf8
import sys,copy
reload(sys)
sys.setrecursionlimit(10000)
def qucikSort(Array, left=0, right=None):
"""爲什麼這中寫法無法保證left <= i-1
或者 i+1 <= right
"""
if not isinstance(Array,list):
return -1
key = Array[left]
i = left
j = len(Array)-1
while i < j:
while Array[j] >= key and i < j:
j-=1
while Array[i] <= key and i < j:
i+=1
Array[i],Array[j] = Array[j],Array[i]
Array[left],Array[i] = Array[i],Array[left]
if left <= i-1:
qucikSort(Array, left, i-1)
if i+1 <= right:
qucikSort(Array, i+1, right)
return Array
def quick_sort(lists, left, right):
if left >= right:
return lists
key = lists[left]
low = left
high = right
while left < right:
while left < right and lists[right] >= key:
right -= 1
lists[left] = lists[right]
while left < right and lists[left] <= key:
left += 1
lists[right] = lists[left]
lists[right] = key
quick_sort(lists, low, left - 1)
quick_sort(lists, left + 1, high)
return lists
if __name__ == '__main__':
#a = [66,2,3,4,5,43,543,55,657,68,76,987,9,543,53,4,5,43,54,6,867,43,432,8,677,545,3,5423]
#b = [9, 2, 3, 4, 5, 43, 4]
a=[6,3,5,4,7,1,2,9,8]
b = copy.deepcopy(a)
print qucikSort(a,0,len(a)-1)
print quick_sort(b,0,len(b)-1)
# encoding:utf8
import sys,copy
reload(sys)
sys.setrecursionlimit(10000)
def qucikSort(Array, left=0, right=None):
"""爲什麼這中寫法無法保證left <= i-1
或者 i+1 <= right
"""
if not isinstance(Array,list):
return -1
key = Array[left]
i = left
j = len(Array)-1
while i < j:
while Array[j] >= key and i < j:
j-=1
while Array[i] <= key and i < j:
i+=1
Array[i],Array[j] = Array[j],Array[i]
Array[left],Array[i] = Array[i],Array[left]
if left <= i-1:
qucikSort(Array, left, i-1)
if i+1 <= right:
qucikSort(Array, i+1, right)
return Array
def quick_sort(lists, left, right):
if left >= right:
return lists
key = lists[left]
low = left
high = right
while left < right:
while left < right and lists[right] >= key:
right -= 1
lists[left] = lists[right]
while left < right and lists[left] <= key:
left += 1
lists[right] = lists[left]
lists[right] = key
quick_sort(lists, low, left - 1)
quick_sort(lists, left + 1, high)
return lists
if __name__ == '__main__':
#a = [66,2,3,4,5,43,543,55,657,68,76,987,9,543,53,4,5,43,54,6,867,43,432,8,677,545,3,5423]
#b = [9, 2, 3, 4, 5, 43, 4]
a=[6,3,5,4,7,1,2,9,8]
b = copy.deepcopy(a)
print qucikSort(a,0,len(a)-1)
print quick_sort(b,0,len(b)-1)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.