什么是计算机科学?

  --首先明确的一点就是计算机科学不仅仅是对计算机的研究,虽然计算机在科学发展的过程中发挥了重大的作用,但是它只是一个工具,一个没有灵魂的工具而已,所谓的计算机科学实际上是对问题,解决问题以及解决问题的过程中产生的解决方案的研究.

意义:

  --数据结构和算法思想的通常性异常的强大,在任何语言中都被使用,它们将会是我们编程生涯张伴随我们最长久利器.

  --数据结构和算法思想也可以帮助我们扩展和历练编码的思想,可以让我们更好的融入到编程世界的角角落落.

数据结构

  --特性:先进后出的数据结构

  --栈顶,栈尾

Stack() 创建一个空的新栈。 它不需要参数,并返回一个空栈。
push(item)将一个新项添加到栈的顶部。它需要 item 做参数并不返回任何内容。
pop() 从栈中删除顶部项。它不需要参数并返回 item 。栈被修改。
peek() 从栈返回顶部项,但不会删除它。不需要参数。 不修改栈。
isEmpty() 测试栈是否为空。不需要参数,并返回布尔值。
size() 返回栈中的 item 数量。不需要参数,并返回一个整数

关键字

class Stack():
def __init__(self):
self.items=[]
def push(self,item):
self.items.append(item)
def isEmpty(self):
return self.items==[]
def pop(self):
if self.isEmpty():
return '空'
else:
return self.items.pop()
def peek(self):
return self.items[len(self.items)-1]
def size(self):
return len(self.items) a=Stack()
a.push(1)
a.push(2)
print(a.peek())
print(a.pop())
print(a.size())

队列

  --特性:先进先出

Queue() 创建一个空的新队列。 它不需要参数,并返回一个空队列。
enqueue(item) 将新项添加到队尾。 它需要 item 作为参数,并不返回任何内容。
dequeue() 从队首移除项。它不需要参数并返回 item。 队列被修改。
isEmpty() 查看队列是否为空。它不需要参数,并返回布尔值。
size() 返回队列中的项数。它不需要参数,并返回一个整数。

关键字

class Queue():
def __init__(self):
self.items=[]
def enqueue(self,item):
self.items.insert(0,item)
def isEmpty(self):
return self.items==[]
def dequeue(self):
if self.isEmpty():
return '空'
else:
return self.items.pop()
def size(self):
return len(self.items)
def travel(self):
print(self.items)
q=Queue()
q.enqueue(1)
q.enqueue(2)
print(q.size())
print(q.travel())

双端队列

  --同列相比,两个头部和尾部.可以在双端进行数据的插入和删除,提供了单数据结构中栈和队列的特性

Deque() 创建一个空的新 deque。它不需要参数,并返回空的 deque。
addFront(item) 将一个新项添加到 deque 的首部。它需要 item 参数 并不返回任何内容。
addRear(item) 将一个新项添加到 deque 的尾部。它需要 item 参数并不返回任何内容。
removeFront() 从 deque 中删除首项。它不需要参数并返回 item。deque 被修改。
removeRear() 从 deque 中删除尾项。它不需要参数并返回 item。deque 被修改。
isEmpty() 测试 deque 是否为空。它不需要参数,并返回布尔值。
size() 返回 deque 中的项数。它不需要参数,并返回一个整数。

关键字

class Dequeue():
def __init__(self):
self.items = []
def addFont(self,item):
self.items.append(item)
def addRear(self,item):
self.items.insert(0,item)
def isEmpty(self):
return self.items == []
def removeFont(self):
if self.isEmpty():
return None
else:
return self.items.pop() def removeRear(self):
if self.isEmpty():
return None
else:
return self.items.pop(0)
def size(self):
return len(self.items)

算法

冒泡排序

list=[1,4,6,5,2,3]

# def sort(alist):
# length = len(alist)
# for i in range(0,length-1):
# for j in range(0,length-1-i): #6-1
# print(list)
# print(alist[j+1])
# if alist[j] >alist[j+1]:
# alist[j],alist[j+1]=alist[j+1],alist[j]
#
# sort(list)
#
#
# print(list)
#思想:每次比较来年各个相邻的元素,如果他们的顺序错误就把他们的位置交换
#缺点:冒泡排序解决了桶排序浪费空间的问题,但是冒泡排序的效率特别低

选择排序

list=[1,4,6,5,2,3]
# def sort(alist):
# length=len(alist)
# for j in range(length-1,0,-1):
# max_index= 0
# for i in range(1,j+1):
# if alist[max_index] < alist[i]:
# max_index = i
# print(alist[max_index] )
# alist[max_index], alist[j] = alist[j], alist[max_index]
#
# sort(list)
# print(list)
#总结:先从列表中,第一个值的后面必需都比他小,,这个位置的值就会与最后一个最小的值交换位置

插入排序

list=[1,4,6,5,2,3]
# def sort(alist):
# length =len(alist)
# for j in range(1,length):
# i=j
# while i>0 :
# if alist[i] < alist[i - 1]:
# alist[i], alist[i - 1] = alist[i - 1], alist[i]
# i -= 1
# print(list)
# else:
# break
# sort(list)
# print(list)
#结论:每回都是两个相邻的值对比,如果前面的值大于后面的值就交换,否则不交换,知道循环完

快排

def sort(alist,start,end):
low = start
high = end
if low >= high:
return
mid = alist[low]
while low < high:
while low < high:
if alist[high] >= mid:
high -= 1
else:
alist[low] = alist[high]
break while low < high:
if alist[low] < mid:
low += 1
else:
alist[high] = alist[low]
break alist[low] = mid ####
#在mid左侧列表中递归调用该函数
sort(alist,start,low-1)
#mid右侧
sort(alist,high+1,end) sort(list,0,len(list)-1)
print(list)

  

python之 算法和数据结构的更多相关文章

  1. 使用python解决算法和数据结构--使用栈实现进制转换

    可以将10进制数据转换成2进制,8进制,16进制等. 晚上练练算法和数据结构哈. # coding = utf-8 class Stack: def __init__(self): self.item ...

  2. 使用python解决算法和数据结构--使用栈实现符号匹配

    现在要自己来实现这些数据结构和常用算法了. 把基础再打牢一些. 栈的作用很大,无须多言. 我尽量看了题目要求,自己来实现代码的. # coding = utf-8 class Stack: def _ ...

  3. problem-solving-with-algorithms-and-data-structure-usingpython(使用python解决算法和数据结构) -- 算法分析

    1. 计算前n个整数的和 def sumOfN(n): theSum = 0 for i in range(1,n+1): theSum += i return theSum print(sumOfN ...

  4. problem-solving-with-algorithms-and-data-structure-usingpython(使用python解决算法和数据结构) -- 基本数据结构 -- 队列

    1. 什么是队列? 队列是项的有序结合,其中添加新项的一端称为队尾,移除项的一端称为队首. FIFO:先进先出 2. 队列抽象数据类型 队列操作如下: Queue() 创建一个空的新队列. 它不需要参 ...

  5. Python算法与数据结构--求所有子数组的和的最大值

    Python算法与数据结构--求所有子数组的和的最大值 玄魂工作室-玄魂 玄魂工作室秘书 玄魂工作室 昨天 题目:输入一个整形数组,数组里有正数也有负数.数组中连续的一个或多个整数组成一个子数组,每个 ...

  6. python算法与数据结构-算法介绍(31)

    一.算法和数据结构 什么是算法和数据结构?如果将最终写好运行的程序比作战场,我们程序员便是指挥作战的将军,而我们所写的代码便是士兵和武器. 那么数据结构和算法是什么?答曰:兵法!故,数据结构和算法是一 ...

  7. python 下的数据结构与算法---2:大O符号与常用算法和数据结构的复杂度速查表

    目录: 一:大O记法 二:各函数高阶比较 三:常用算法和数据结构的复杂度速查表 四:常见的logn是怎么来的 一:大O记法 算法复杂度记法有很多种,其中最常用的就是Big O notation(大O记 ...

  8. Python 基础算法

    递归 时间&空间复杂度 常见列表查找 算法排序 数据结构 递归 在调用一个函数的过程中,直接或间接地调用了函数本身这就叫做递归. 注:python在递归中没用像别的语言对递归进行优化,所以每一 ...

  9. Python中的高级数据结构详解

    这篇文章主要介绍了Python中的高级数据结构详解,本文讲解了Collection.Array.Heapq.Bisect.Weakref.Copy以及Pprint这些数据结构的用法,需要的朋友可以参考 ...

随机推荐

  1. mybatis深入理解(四)-----MyBatis的架构设计以及实例分析

    MyBatis是目前非常流行的ORM框架,它的功能很强大,然而其实现却比较简单.优雅.本文主要讲述MyBatis的架构设计思路,并且讨论MyBatis的几个核心部件,然后结合一个select查询实例, ...

  2. LintCode_514 Paint Fence

    题目 here is a fence with n posts, each post can be painted with one of the k colors.You have to paint ...

  3. CesiumLab V1.2 新功能 倾斜数据处理

    一转眼又是一周的时间,我们的实验室功能又强大了. 照旧我们先放毒,放图,图,太晚了,字都敲不到一起了   lod以及包围盒   大雁塔实例,按楼层单体化   倾斜数据处理参数设置 简单介绍一下 Ces ...

  4. RQNOJ PID141 / 寻找代表元 [2017年6月计划 二分图01]

    PID141 / 寻找代表元 ☆ 提交你的代码 查看讨论和题解 1分前 我的状态 已通过 2017-06-28 21:03:46 运行耗时:31 ms 运行内存:28048 KB 查看最后一次评测记录 ...

  5. Leetcode40. Combination Sum组合总数2 II

    给定一个数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合. candidates 中的每个数字在每个组合中只能使用一次. ...

  6. Vue. 之 Element获取table中选中的行

    Vue. 之 Element获取table中选中的行 问题描述: 如下截图,在Table中选择数据后,然后在点击“统计”按钮,获取Table表中选择的行 解决方案: 1. 给“统计”这个按钮添加一个点 ...

  7. 移动web图片高度自适应的解决方案

    由于图片的加载是在dom加载完成之后进行的,于是,在手机端浏览网页时,经常会看到页面刚打开时很多内容叠在一起,当图片加载完成后,页面会由于图片加载完成出现明显的抖动 针对这个问题,有以下几种解决方案 ...

  8. JS运算的优先级

    汇总表 下面的表将所有运算符按照优先级的不同从高到低排列. 优先级 运算类型 关联性 运算符 20 圆括号 n/a ( … ) 19 成员访问 从左到右 … . … 需计算的成员访问 从左到右 … [ ...

  9. Directx11教程(32) 纹理映射(2)

    原文:Directx11教程(32) 纹理映射(2)     在写代码之前,我们先制作一个dds文件.从网上找到了一张照片,处理成为512*512,保存为jpg格式.     启动微软的directx ...

  10. python Python程序的架构