一、概念
输入:一个算法必须有0个或以上的输入量
输出:一个算法应该有一个或以上的输出量,输出量是算法计算的结果
明确性:算法的描述必须无歧义,以保证算法的实际执行结果是精确匹配要求或期望,通常要求实际运行结果是确定的
有限性:依据图灵的定义,一个算法是能够被任何图灵完备系统模拟的一串运算,而图灵机只有有限个状态,有限个输入符号和有限个转移函数(命令),而一些定义更规定算法必须在有限个步骤内完成
有效性:可行性,能够实现,算法中操作都是可同过已实现的基本运算执行有限次来实现的
我们接下来排序所使用的算法大类似分治法:把一个问题分区成互相独立的多个部分分别求解的思路,以便于进行并行计算。
二、排序算法
1、冒泡排序(Bubble sort)
重复地走访过要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。
比较相邻的两个元素。如果第一个比第二个大,就交换它们两个;
对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对,这样最大值就被固定到了最后;
重头开始新的一轮的两两比较,被固定的不比较,得到一个新最大值,固定到倒数第二位;
重复步骤1~3,直到排序完成。
image
作者想你扔了一个链接并不想告诉你这是动画可视化数据结构和算法~
伪代码:
image
流程图:
2018-7-19-21-15-15.png
2、选择排序(selection sort)
首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置
再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。
以此类推,直到所有元素均排序完毕。
image
如图所示,是寻找最小值,相当于每轮都要和每一个元素进行对比得出最小值放入有序区。
伪代码:
2327.png
流程图:
2018-7-2-16-5-51.png
作者:饥人谷_陈杨
链接:https://www.jianshu.com/p/f74b137a9ffd
共同学习,写下你的评论
评论加载中...
作者其他优质文章