Python学习笔记(三)
来源:互联网 发布:数据挖掘开发规范 编辑:程序博客网 时间:2024/05/16 19:15
用Python将查找和排序算法实现了一下,算是对Python的一个练习。
其实不管是查找还是排序都写了很多遍,但用Python重新写还是花了点时间。因为总是写上if就想打上括号,面对代码块就想用花括号包围,遇到数组就想直接赋值(Python得用insert赋值)。难怪很多书上都说要不断学习新的语言,尤其是差别特别大的语言,这样才可以锻炼编程思维,开拓视野。
import time;#author:Tammy Pi#function:用Python对插入和排序算法进行练习arr = [809,834,477,478,307,122,96,102,234,476];#线性查找,如果找到了就返回下标,否则返回-1def line_search(x): for i in range(0,len(arr)): if arr[i]==x: return i; return -1;t1 = time.time();print(line_search(96));t2 = time.time();print("花费时间:"+str((t2-t1)*1000));arr1 = [1,3,5,7,9];#对于有序的数组查找,利用二分查找法def binary_search(x,start,end): if start<=end: middle = int((start+end)/2); if x<arr1[middle]: return binary_search(x,start,middle-1); elif x>arr1[middle]: return binary_search(x,middle+1,end); else: return middle; return -1;print("二分查找:"+str(binary_search(7,0,len(arr1)-1)));arr2 = [3,5,7,6,1];#插入排序与选择排序结合def my_sort(arr2): for i in range(0,len(arr2)-1): #选择最小的 minnum = min(arr2[i:len(arr2)]); #插入最前方 j = arr2.index(minnum)-1; while j>=i: arr2[j+1] = arr2[j]; j-=1; arr2[i] = minnum; return arr2;arr2 = my_sort(arr2);print("排序之后的结果为:");print(arr2);arr3 = [8,9,1,5,3];#选择排序def select_sort(arr3): for i in range(0,len(arr3)-1): minnum = min(arr3[i:len(arr3)]); minindex = arr3.index(minnum); arr3[minindex],arr3[i]=arr3[i],arr3[minindex]; return arr3;arr3 = select_sort(arr3);print("选择排序之后的结果为:");print(arr3);arr4 = [9,7,2,5,1];#插入排序def insert_sort(arr4): for i in range(1,len(arr4)): j = i-1; temp = arr4[i]; while j>=0 and arr4[j]>temp: arr4[j+1]=arr4[j]; j-=1; arr4[j+1] = temp; return arr4;arr4 = insert_sort(arr4);print("插入排序之后的结果为:");print(arr4);arr5 = [6,8,1,2,3];#归并排序def union_func(arr5,start,middle,end): arr_temp = []; index1 = start-1; index2 = middle; index = -1; while index1<middle and index2<end: if arr5[index1+1]<=arr5[index2+1]: arr_temp.insert(index+1,arr5[index1+1]); index+=1; index1+=1; else: arr_temp.insert(index+1,arr5[index2+1]); index+=1; index2+=1; while index1<middle: arr_temp.insert(index+1,arr5[index1+1]); index += 1; index1 += 1; while index2<end: arr_temp.insert(index+1,arr5[index2+1]); index += 1; index2 += 1; for i in range(start,end+1): arr5[i] = arr_temp[i-start]; return arr5;def union_sort(arr5,start,end): if start<end: middle = int((start+end)/2); arr5 = union_sort(arr5,start,middle); arr5 = union_sort(arr5,middle+1,end); arr5 = union_func(arr5,start,middle,end); return arr5;arr5 = union_sort(arr5,0,len(arr5)-1);print("归并排序的结果为:");print(arr5);
保持不断学习的劲头,终有一天你会破蛹而出。
- python学习笔记(三)
- Python学习笔记(三)
- python学习笔记(三)
- python学习笔记:(三)
- Python学习笔记(三)
- python学习笔记(三)
- Python学习笔记(三)
- python 学习笔记(三)
- python学习笔记(三)
- Python学习笔记(三)
- python学习笔记(三)
- Python学习笔记(三)
- Python学习笔记(三)
- python学习笔记(三)
- Python学习笔记(三)
- Python学习笔记(三)
- Python学习笔记(三)
- Python学习笔记(三)
- android流量统计的小结
- 使用svcutil工具自动生成wcf调用的客户端代码和配置文件
- android49——异步加载
- 在做Urlwrite+struts2.0的一个小示例的时候老是出现找不到action的情况404错误
- 九、横竖表互转
- Python学习笔记(三)
- DMA 简介
- 云计算 Instagram 5位传奇工程师背后的"极简"技术(PPT全译)
- 怎么创建block并在首页调用
- Linux目录结构详解
- JAVASE----09----集合框架
- 【OpenStack】OpenStack中的消息队列2--以Quantum为例
- Google Analytics in IOS(四)—— 高级配置
- 笔记本电脑内网、外网一起使用