#!/usr/bin/env python2
# -*- coding: utf-8 -*-
"""
Created on Tue Nov 21 22:28:09 2017 @author: livermorium116
""" import random class MergeSortedByCur():
def __init__(self, data):
self.data = data
#print("ORIGIN DATA:", self.data)
self.CountCur=0
self.Results=self.MergeSort(self.data)
def MergeSort(self,data): if len(data) <= 1:
return data
num = int(len(data)/2)
Left = self.MergeSort(data[:num])
Right = self.MergeSort(data[num:])
#print("LEFT:",Left,"RIGHT:",Right)
self.CountCur += 1
#print ("%d Cursions:"%(self.CountCur))
return self.Merge(Left, Right) def Merge(self,left, right):
R, L = 0, 0
result = []
while L < len(left ) and R < len(right ):
if left[L] < right[R]:
result.append(left[L])
L += 1
else:
result.append(right[R])
R += 1
result.extend(left[L:])
result.extend(right[R:])
#print("MergeSorted DATA:",result)
return result if __name__ == "__main__":
data = [random.randint(1,100) for i in range(13)]
print(data)
print MergeSortedByCur(data).Results

python 实现排序算法(二)-合并排序(递归法)的更多相关文章

  1. Shell排序算法和合并排序算法

    Shell排序(希尔排序)算法Shell排序严格来说基于插入排序的思想,其又称为希尔排序或者缩小增量排序. Shell排序的流程:1.将由n个元素的数组分成n/2个数字序列,第1个数据和第n/2+1个 ...

  2. 算法:合并排序(Merge Sort)

    算法定义 合并排序是一种递归算法,思路如下: 如果源数组长度为 1,立即返回. 将源数组平分为两个新数组:Left 和 Right. 对 Left 执行递归排序. 对 Right 执行递归排序. 将排 ...

  3. Python排序算法之选择排序定义与用法示例

    Python排序算法之选择排序定义与用法示例 这篇文章主要介绍了Python排序算法之选择排序定义与用法,简单描述了选择排序的功能.原理,并结合实例形式分析了Python定义与使用选择排序的相关操作技 ...

  4. 数据结构与算法之PHP排序算法(希尔排序)

    一.基本思想 希尔排序算法是希尔排序,也称递减增量排序算法,是插入排序的一种更高效的改进版本. 该方法的基本思想是:先将整个待排元素序列分割成若干个子序列(由相隔某个“增量”的元素组成的)分别进行直接 ...

  5. 【DS】排序算法之希尔排序(Shell Sort)

    一.算法思想 希尔排序,也称递减增量排序算法,是插入排序的一种更高效的改进版本.希尔排序是非稳定排序算法.希尔排序是基于插入排序的以下两点性质而提出改进方法的:1)插入排序在对几乎已经排好序的数据操作 ...

  6. 排序算法总结------选择排序 ---javascript描述

    每当面试时避不可少谈论的话题是排序算法,上次面试时被问到写排序算法,然后脑袋一懵不会写,狠狠的被面试官鄙视了一番,问我是不是第一次参加面试,怎么可以连排序算法都不会呢?不过当时确实是第一次去面试,以此 ...

  7. Java常见排序算法之Shell排序

    在学习算法的过程中,我们难免会接触很多和排序相关的算法.总而言之,对于任何编程人员来说,基本的排序算法是必须要掌握的. 从今天开始,我们将要进行基本的排序算法的讲解.Are you ready?Let ...

  8. Hadoop案例(八)辅助排序和二次排序案例(GroupingComparator)

    辅助排序和二次排序案例(GroupingComparator) 1.需求 有如下订单数据 订单id 商品id 成交金额 0000001 Pdt_01 222.8 0000001 Pdt_05 25.8 ...

  9. 八大排序算法~简单选择排序【记录下标k变量的作用】

    八大排序算法~简单选择排序[记录下标k变量的作用] 1,思想:打擂台法,数组中的前n-1个元素依次上擂台"装嫩",后边的元素一个挨着一个不服,一个一个上去换掉它 2,优化:通过记录 ...

随机推荐

  1. KiCad 的 Digikey 元件库

    KiCad 的 Digikey 元件库 KiCad 最初由法国人Jean-Pierre Charras于1992年推出,目前由 CERN(欧洲核子研究组织)接手开发. 而且现在有很多大公司的加入,比如 ...

  2. taro 知识点

    taro 的包: 包名 说明 @tarojs/redux Redux for Taro @tarojs/redux-h5 Forked react-redux for taro @tarojs/plu ...

  3. java-shiro登录验证

    登录验证: LoginController:(LoginController.java) @ResponseBody @RequestMapping(value="/login", ...

  4. C# 装箱

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  5. ulimit设置内存限制是否有效

    如何使用ulimit限制物理内存 限制物理内存 $ ulimit -m 512000 经测试,无效. 限制物理内存不起作用,ulimit不支持限制物理内存,可见man ulimit手册 -m The ...

  6. 网易云课堂js学习笔记

    javascript:用来在页面中编写特效的,和html/css一样都是由浏览器解析的 javascript语言: 一.js如何运行的(javaScript,jscript,vbscript,appl ...

  7. Using the SDRAM on Altera’s DE1-SoC Board with Verilog Designs

    Using the SDRAM on Altera’sDE1-SoC Board with Verilog Designs 1.DE1-SOC Board上SDRAM资源 2.系统架构框图 3.关于S ...

  8. T-SQL目录汇总1

    DDL alter create drop DML select       update delete insert DCL  grant revoke deny ================= ...

  9. 30 个java编程技巧(最佳实践的初学者)

    1.return 一个空的集合,而不是 null 如果一个程序返回一个没有任何值的集合,请确保一个空集合返回,而不是空元素.这样你就不用去写一大堆 ”if else” 判断null元素. Java 的 ...

  10. PHP 获取url里文件的扩展名

    PHP 获取url地址中文件的扩展名 $url = 'http://www.abc.com/ab/cd/e.php?id=1&data=2#laowen';echo pathinfo( par ...