zoukankan      html  css  js  c++  java
  • Python几个算法实现

    1.平衡点问题:

    比如int[] numbers = {1,3,5,7,8,25,4,20}; 25前面的总和为24,25后面的总和也是24,25这个点就是平衡点;假如一个数组中的元素,其前面的部分等于后面的部分,那么这个点的位序就是平衡点
    要求:返回任何一个平衡点

     1 def balance_point(li):
     2     start = 0
     3     end = len(li)-1
     4     sum_start = li[start]
     5     sum_end = li[end]
     6     while start < end:
     7         if sum_start == sum_end and end-start == 2:
     8             return start+1
     9         if sum_start < sum_end:
    10             start += 1
    11             sum_start += li[start]
    12         else:
    13             end -= 1
    14             sum_end += li[end]
    15     return -1

    2.支配点问题:

    支配数:数组中某个元素出现的次数大于数组总数的一半时就成为支配数,其所在位序成为支配点;比如int[] a = {3,3,1,2,3};3为支配数,0,1,4分别为支配点;
    要求:返回任何一个支配点

    1 def control_point(li):
    2     count_li = len(li)/2
    3     for i in li:
    4         if li.count(i) > count_li:
    5             return i
    6 
    7     return -1

    3.python冒泡排序

    冒泡排序是最简单且稳定的排序方式,时间复杂度为O(n*n).下面主要使用Python range()函数控制循环,以及python返回多个值的性质,使得代码很简单

    def bubble_sort(li):
        for i in range(len(li)-1, 0, -1):
            for j in range(0,i):
                if li[j] > li[j+1]:
                    li[j+1], li[j] = li[j], li[j+1]

    4.输出1~N之间的素数

    定义:素数又叫质数维基百科

    from math import sqrt
    
    
    def sushu_out(n):
        result = []
        for num in range(2, n):
            flag = True
            for j in range(2, int(sqrt(num))+1):
                if num % j == 0:
                    flag = False
                    break
            if flag:
                result.append(num)
        print result, len(result)

    5.删除list中重复元素

    • l2 = list(set(l1))
    • l2 = {}.fromkeys(l1).keys()

    不改变原来顺序

    • l2 = sorted(set(l1),key=l1.index)
    • 遍历

    6.斐波那契数列

    定义斐波那契数列

    def fib(n):
        ret = []
        a = 0
        b = 1
        for i in range(0, n):
            ret.append(b)      # 主意此处不能使用ret[i] = b ,会导致数组越界,因为ret现在为空,Java中数组初始化要给定长度,Python不同。
            a, b = b, a+b
        return ret

    同步于:http://polarisary.github.io/2014/07/08/python_calc/

  • 相关阅读:
    在eclipse中如何在大量项目中查找指定文件
    字体图标使用笔记
    微信扫码显示特效
    Flex 布局教程:实例篇
    Flex 布局教程:语法篇
    12月份前端资源分享
    什么样的技术能活下来?该如何筛选繁复的框架和工具
    web前端知识在乱花渐欲迷人眼的当下,如何分清主次和学习优先级呢?
    2015前端生态发展回顾(转)
    HDU1507 Uncle Tom's Inherited Land*
  • 原文地址:https://www.cnblogs.com/zeng-wei/p/3831381.html
Copyright © 2011-2022 走看看