数据结构与算法
smile__su
这个作者很懒,什么都没留下…
展开
-
数据结构与算法之冒泡排序
一、前言冒泡排序是一种交换排序。什么是交换排序呢?答曰:交换排序即两两比较待排序的关键字,并交换不满足次序要求的那对数,直到整个表都满足次序要求为止。二、算法思想它重复地走访要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端,故名冒泡排序三、...原创 2018-03-25 09:05:35 · 253 阅读 · 1 评论 -
数据结构与算法之直接插入排序
一、前言直接插入排序(Insertion Sort)序是一种最简单的插入排序。为简化问题,在此我们只讨论升序排序。二、算法思想插入排序:每一趟将一个待排序的记录,按照其关键字的大小插入到有序队列的合适位置里,直到全部插入完成。假设有一组无序序列 R0, R1, ... , RN-1。(1) 我们先将这个序列中下标为 0 的元素视为元素个数为 1 的有序序列。(2) 然后,我们要依次把 R1, R...原创 2018-03-26 17:38:50 · 1554 阅读 · 0 评论 -
数据结构与算法之快速排序
一、前言快速排序是一种交换排序。二、算法思想快速排序的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分:分割点左边都是比它小的数,右边都是比它大的数。然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。三、代码# -*- coding: utf-8 -*-"""Created on Wed Mar 28 09:31:57 2018@...原创 2018-04-01 20:03:48 · 195 阅读 · 0 评论 -
数据结构与算法之归并排序
一、前言归并排序是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。二、算法思想该算法采用经典的分治(divide-and-conquer)策略(分治法将问题分(divide)成一些小的问题然后递归求解,而治(conquer)的阶段则将分的阶段得到的各答案"修补"在一起,即分而治之)。三、代码# -*- coding: utf-8...转载 2018-04-10 08:52:00 · 330 阅读 · 0 评论 -
数据结构与算法之希尔排序
一、前言希尔(Shell)排序又称为缩小增量排序,它是一种插入排序。它是直接插入排序算法的一种威力加强版。希尔排序,也称递减增量排序算法,以其设计者希尔(Donald Shell)的名字命名,该算法由 1959 年公布。二、算法思想我们举个例子来描述算法流程(以下摘自维基百科):假设有这样一组数 {13, 14, 94, 33, 82, 25, 59, 94, 65, 23, 45, 27, 73...原创 2018-03-27 23:28:41 · 224 阅读 · 0 评论 -
数据结构与算法之简单选择排序
一、算法思想每趟从待排序的记录中选出关键字最小的记录,顺序放在已排序的记录序列末尾,直到全部排序结束为止。二、代码# -*- coding: utf-8 -*-"""Created on Wed Mar 28 21:22:24 2018@author: Administrator"""def SelectSort(input_list): if len(input_list)=...原创 2018-04-04 20:12:51 · 505 阅读 · 0 评论