# -*- coding:utf-8 -*-

"""
什么是数据结构
   --> 存储、组织数据的方式
   数据的种类有很多:字符串、整数、浮点、...
   组织各种数据的方式:即数据元素之间的关系
        列表、字典、元组、...
   数据的结构有两种形式:
        物理形式:顺序表、链表
        逻辑形式:集合、线性、树形、图形
"""

# 数据结构形式 : 物理➕逻辑
"""
物理形式:顺序表、链表
逻辑形式:集合、线性、树形、图形
"""
# 算法:  --> 为了实现业务目的各种分析{方法和思路}

"""
算法复杂度:
    时间复杂度:代码执行的时间
    全称：渐近时间复杂度
            特点： 大O记法、规律趋势
                最优： 梦想
                最坏： 最低保证
                平均： 仅供参考
    空间复杂度:代码运行的空间
            特点： 空间换时间
"""

"""
抽象数据类型(Abstract Data Type) 抽象数据类型(ADT)的含义是指一个数学类型以及定义在此数学类型上的一组操作。即把数据类型和数据类型上的运
算捆在一起，进行封装。
  举例一:
数据类型-人 多个人，陈浩南、山鸡、大天二、大飞... 数据运算-关系 彼此间的团队联系 抽象数据类型=类型+运算=人+关系 洪兴

"""
# 算法特性: 量入出题题能解,行有意步步可为

"""
算法的评判标准
    步骤数量 + 单位时间
    关系：
                    步骤数量*单位时间 = 代码运行时间
                    关键点：
                        步骤数量
                        
 时间复杂度分类
            最优： 梦想
            最坏： 最低保证
            平均： 仅供参考
            
            2.2.3 基本计算规则
            1、基本操作  O(1)
                特点：一步到位    在某个具体数值范围内容，
            2、顺序结构 O(n)
                特点：没有具体数值
            3、循环结构
                简单循环：O(n3)
            特点：乘方
                递归循环：O(logn)
            4、分支结构：	
                特点：最坏时间复杂度
            5、抓主干
            6、最坏时间复杂度
            
O(1) < O(logn) < O(n) < O(nlogn) < O(n2) < O(n3) < O(2n) < O(n!) < O(nn)
时间复杂度越小效率越高
数字越小,  n越大, 时间复杂值越大,  效率越低
"""

import time

start_time = time.time()
for a in range(1001):
    for b in range(1001):
        for c in range(1001):
            if a + b + c == 1000 and a ** 2 + b ** 2 == c ** 2:
                print("a,b,c:%d,%d,%d" % (a, b, c))
end_time = time.time()

if __name__ == '__main__':
    print("used time %f" % (end_time - start_time))
