[数据结构与算法]排序算法(Python)
2015-12-07 14:42
549 查看
1、直接插入排序
给定一个数组后,从第二个元素开始,如果比第一个小,就跟他交换位置,否则不动;第三个元素如果比第二个小,把第三个跟第二个交换位置,在把第二个与第一个比较;.....
View Code
5、快速排序法
1)选择一个基准元素,通常选择第一个元素或者最后一个元素,
2)通过一趟排序讲待排序的记录分割成独立的两部分,其中一部分记录的元素值均比基准元素值小。另一部分记录的 元素值比基准值大。
3)此时基准元素在其排好序后的正确位置
4)然后分别对这两部分记录用同样的方法继续进行排序,直到整个序列有序。
快排过程中,如果j的值大于等与基准值,把j往前移动,如果小于基准值,把这个值给当前最小下标i处,i指针后移一位,再把值付给j的位置
6、归并排序
给定一个数组后,从第二个元素开始,如果比第一个小,就跟他交换位置,否则不动;第三个元素如果比第二个小,把第三个跟第二个交换位置,在把第二个与第一个比较;.....
def buble(arr): for i in range(0,len(arr)): for j in range(i+1,len(arr)): if arr[i] > arr[j]: arr[i],arr[j] = arr[j],arr[i] print arr
View Code
5、快速排序法
1)选择一个基准元素,通常选择第一个元素或者最后一个元素,
2)通过一趟排序讲待排序的记录分割成独立的两部分,其中一部分记录的元素值均比基准元素值小。另一部分记录的 元素值比基准值大。
3)此时基准元素在其排好序后的正确位置
4)然后分别对这两部分记录用同样的方法继续进行排序,直到整个序列有序。
def kp(arr,i,j): if i < j: base = kpgc(arr,i,j) kpgc(arr,i,base ) kpgc(arr,base + 1,j)
def kpgc(arr,i,j): base = arr[i] while i < j: while i < j and arr[j] >= base: j-=1 while i < j and arr[j] < base: arr[i] = arr[j] i += 1 arr[j] = arr[i] arr[i] = base return i
快排过程中,如果j的值大于等与基准值,把j往前移动,如果小于基准值,把这个值给当前最小下标i处,i指针后移一位,再把值付给j的位置
6、归并排序
相关文章推荐
- Swift手记 —— 关于数据结构
- STL底层数据结构
- nyoj1063已知树的先序,求第n层的所有值(坑,注意可能为负)
- 【郝斌数据结构自学笔记】75-78_链式二叉树遍历具体程序演示_5种常用排序概述和快速排序详细讲解_再次讨论什么是数据结构_再次讨论到底什么是泛型
- 【郝斌数据结构自学笔记】70-74_已知两种遍历序列求原始二叉树概述_已知先序和中序求后序_已知中序和后序求先序_树的应用简单介绍
- 【郝斌数据结构自学笔记】66-69_森林的存储_二叉树的先序遍历_二叉树的中序遍历【中间访问根节点】_二叉树的后序遍历【最后访问根节点】
- 【郝斌数据结构自学笔记】60-65_树的定义_树的专业术语解释_树的分类_二叉树连续存【重点】_二叉树的链式存储_普通树的存储
- 【郝斌数据结构自学笔记】57-59_递归8 _ 汉诺塔_1线性结构总复习 2线性结构和非线性结构关系 3栈队列链表数组之间的关系【重点】
- 【郝斌数据结构自学笔记】53-56_一个函数为什么可以自己调用自己_递归必须满足三个条件_循环和递归的比较
- 【郝斌数据结构自学笔记】49-52_递归的定义和不同函数之间相互调程序举例_一个函数自己调自己程序举例
- 链表反转的两种实现方法
- 数据结构 — 查找(最基础)
- 数据结构基础 归并排序 java 实现
- UVALive 7146 (贪心+少许数据结构基础)2014acm/icpc区域赛上海站
- 稀疏矩阵的数据结构及相关算法
- 【算法设计与数据结构】URAL 1152.False Mirrors(状态压缩dp+dfs)
- 【算法设计与数据结构】为何程序员喜欢将INF设置为0x3f3f3f3f?
- 学习数据结构有用吗?
- 鸟瞰数据结构
- 数据结构上机实验-二叉排序树的创建