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);


保持不断学习的劲头,终有一天你会破蛹而出。

原创粉丝点击