python快速查找算法应用实例,python快速查找


本文实例讲述了Python快速查找算法的应用,分享给大家供大家参考。

具体实现方法如下:

import random
def partition(list_object,start,end):
  random_choice = start
  #random.choice(range(start,end+1))
  #把这里的start改成random()效率会更高些
  x = list_object[random_choice]
  i = start
  j = end
  while True:
    while list_object[i] < x and i < end:
      i += 1
    while list_object[j] > x:
      j -= 1
    if i >= j:
      break
    list_object[i],list_object[j] = list_object[j],list_object[i]
  print list_object
  #list_object[random_choice] = list_object[j]
  #list_object[j] = random_choice
  return j

def quick_sort(list_object,start,end):
  if start < end:
    temp = partition(list_object,start,end)
    quick_sort(list_object,start,temp-1)
    quick_sort(list_object,temp + 1 ,end)
    
a_list = [69,65,90,37,92,6,28,54]
quick_sort(a_list,0,7)
print a_list

程序测试环境为Python2.7.6

输出结果如下:

[54, 65, 28, 37, 6, 69, 92, 90]
[6, 37, 28, 54, 65, 69, 92, 90]
[6, 37, 28, 54, 65, 69, 92, 90]
[6, 28, 37, 54, 65, 69, 92, 90]
[6, 28, 37, 54, 65, 69, 90, 92]
[6, 28, 37, 54, 65, 69, 90, 92]

希望本文所述对大家的Python程序设计有所帮助。


各种查找算法的比较?

二分:要求待查找序列是排完序的,即是有序的序列。
哈希:能够比较好的解决位置冲突的情况下哈希查找都是比较快速的。主要是hash函数的选择。
二叉排序树:如果树比较平衡的情况下,这种查找的复杂度是log(n),但是如果很偏,比如一直都只插入左儿子节点(这样就和链表一样了),那么就比较糟糕了。
 

快速查找算法 具体文字描述 附java程序更好 拜托各位了

快速查找算法 有叫做二分发,前提是必须对有序数组中的元素进行递归查找, 首先假设目标在数组中中间位置,与中间位置比较,如大于,则重左侧开始查找,如小于,则右侧开始查找,这样每次查找都能排除当前的一半,
 

评论关闭