查找和排序(Py)
来源:互联网 发布:知乎绑定合适的话题 编辑:程序博客网 时间:2024/06/05 07:15
二分查找
数据结构:数组
平均时间复杂度:
# 思考入口:最高点、最低点和value 关系def binary_search(input_array, value): low = 0 high = len(input_array)-1 while(low<=high): mid = (low+high)/2 if(input_array[mid]==value): return mid elif(input_array[mid]<value): low = mid+1 else: high = mid - 1 return -1# 调用test_list = [1,3,9,11,15,19,29]test_val1 = 25test_val2 = 15print binary_search(test_list, test_val1)print binary_search(test_list, test_val2)
递归
重要特点:必须明确递归结束条件,递归次数过多容易造成栈溢出
def get_fib(position): if position==0 or position==1: return position return get_fib(position-1)+get_fib(position-2)# Test casesprint get_fib(9)print get_fib(11)print get_fib(0)
冒泡排序
平均时间复杂度:
空间复杂度 :
归并排序
平均时间复杂度:
空间复杂度:
快速排序
快速排序时对冒泡排序的一种改进
时间复杂度:
空间复杂度:
def sub_sort(array,low,high): key = array[low] while low < high: while low < high and array[high] >= key: high -= 1 while low < high and array[high] < key: array[low] = array[high] low += 1 array[high] = array[low] array[low] = key return lowdef quick_sort1(array,low,high): if low < high: key_index = sub_sort(array,low,high) quick_sort1(array,low,key_index) quick_sort1(array,key_index+1,high)if __name__ == '__main__': #array = [8,10,9,6,4,16,5,13,26,18,2,45,34,23,1,7,3] array1 = [7,3,5,6,2,4,1] print array1 quick_sort1(array1,0,len(array1)-1) print array1
阅读全文
0 0
- 查找和排序(Py)
- 排序和二分查找(从小到大排序)
- 排序和查找
- 字符串排序和查找
- 排序和查找
- 数据结构 排序和查找
- 查找和排序
- 查找和排序算法
- 查找和排序题目
- 排序和查找
- 排序和查找
- 查找和排序
- 查找和排序
- 排序和查找
- 二分排序和查找
- js排序和查找
- 查找和排序
- 排序和查找
- 最全Pycharm教程(3)——代码的调试、运行
- 数学基础复习笔记(1)——向量点积定义的证明
- Tensorflow学习之实现卷积神经网络(五)
- xcode解决xxx文件不能打开问题。
- 【POJ】2186
- 查找和排序(Py)
- 随便聊聊Lambda
- HDU 6194 string string string【后缀数组】
- hdu 6201
- jsp的page指令
- hdu6197 最长上升子序列(LIS)长度
- Linux笔记_关闭 防火墙 和 SELINUX
- java web(四)javaBean
- Autoencoders