Skip to content

Instantly share code, notes, and snippets.

@sing1ee
Created July 11, 2012 01:47
Show Gist options
  • Save sing1ee/3087430 to your computer and use it in GitHub Desktop.
Save sing1ee/3087430 to your computer and use it in GitHub Desktop.
quick sort
# !/usr/bin/python
# -*- encoding: utf-8 -*-
import sys
def quick_sort_1(array, start, end):
if start > end:
return
t = array[start]
t_index = start
for i in range(start + 1, end + 1):
if array[i] < t:
t_index += 1
array[i], array[t_index] = array[t_index], array[i]
array[start], array[t_index] = array[t_index], array[start]
quick_sort_1(array, start, t_index - 1)
quick_sort_1(array, t_index + 1, end)
return
def quick_sort_ex2(array, start, end):
if start > end:
return
t = start
for i in range(start + 1, end):
if array[i] < array[t]:
array[i], array[t] = array[t], array[i]
t = i
quick_sort_1(array, start, t - 1)
quick_sort_1(array, t + 1, end)
return
def quick_sort_back(array, start, end):
if start > end:
return
m = end
for i in range(end, start - 1, -1):
if array[i] >= array[start]:
array[m], array[i] = array[i], array[m]
m -= 1
quick_sort_1(array, start, m - 1)
quick_sort_1(array, m + 1, end)
return
def quick_sort_back_2(array, start, end):
if start > end:
return
m = end
i = end
while i >= start:
while array[i] < array[start]:
i -= 1
array[m], array[i] = array[i], array[m]
m -= 1
i -= 1
quick_sort_1(array, start, m - 1)
quick_sort_1(array, m + 1, end)
return
def quick_sort_2(array, start, end):
if start > end:
return
t = array[start]
i = start + 1
j = end
while True:
while array[i] < t:
i += 1
while array[j] > t:
j -= 1
if j < i:
break
array[i], array[j] = array[j], array[i]
array[start], array[j] = array[j], array[start]
quick_sort_1(array, start, j - 1)
quick_sort_1(array, j, end)
return
#quick_sort_3 t 随机取一个元素
array = list(sys.argv[1])
quick_sort_back_2(array, 0, len(array) - 1)
print ''.join(array)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment