Algorithms: Design and Analysis, Part 1

第一章讲的是分治算法,即DC,这一章讲的是快速排序QuickSort。作业难度已经增加了,Problem Sets做了两次一不小心只得了四分,编程作业也作了两次才作对。

这次作业是实现快速排序,并改变哨兵元素的选择方法比较性能。哨兵可以选择为第一个、最后一个元素,也可以选取首、尾、中间三个元素第二大的数字。

最后一种方法实现时可以借用list的排序方法。

代码如下:

def quickSort(arrayall):if len(arrayall)<=1:return arrayall,0#sel p#p=0#p=len(arrayall)-1p=(len(arrayall)-1)/2a=[(arrayall[0],0),(arrayall[p],p),(arrayall[-1],len(arrayall)-1)]a.sort()tmp,p=a[1]if p!=0:arrayall[0],arrayall[p]=arrayall[p],arrayall[0]indi=1for indj in range(1,len(arrayall)):if arrayall[indj]<arrayall[0]:arrayall[indi],arrayall[indj]=arrayall[indj],arrayall[indi]indi+=1arrayall[0],arrayall[indi-1]=arrayall[indi-1],arrayall[0]arrayallp,mp=quickSort(arrayall[:indi-1])arrayallq,mq=quickSort(arrayall[indi:])return arrayallp+[arrayall[indi-1]]+arrayallq,mp+mq+len(arrayall)-1f=open('QuickSort.txt','r')
listall=f.read()
listall=[int(x) for x in listall.split()]
f.close()sortedlist,m=quickSort(listall)
print m

当然实验结果是最后一种方法性能比较优越。

Algorithms Part 1-Question 2-QuickSort-快速排序算法相关推荐

  1. JavaScript实现QuickSort快速排序算法(附完整源码)

    JavaScript实现QuickSort快速排序算法(附完整源码) Comparator.js完整源代码 Sort.js完整源代码 QuickSort .js完整源代码 Comparator.js完 ...

  2. JAVA:实现QuickSort快速排序算法(附完整源码)

    JAVA:实现QuickSort快速排序算法 package com.thealgorithms.sorts;import static com.thealgorithms.sorts.SortUti ...

  3. 【算法图文动画详解系列】QuickSort 快速排序算法

    快排简介 快速排序(Quicksort)是对冒泡排序算法的一种改进. 快速排序由C. A. R. Hoare在1960年提出.它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的 ...

  4. 快速排序算法QuickSort(二)

    1.说明 这个快速排序算法是对前面的 快速排序算法QuickSort  一种改进. 只是修改了int Partition(int arry[],int start,int end)这个方法. 2.思路 ...

  5. 快速排序算法quickSort

    最简单的快速排序算法 #include <iostream> #include <vector> #include <algorithm> using namesp ...

  6. 解释什么是快速排序算法?_解释排序算法

    解释什么是快速排序算法? Sorting algorithms are a set of instructions that take an array or list as an input and ...

  7. 快速排序算法的C++实现

    目录 算法描述 算法执行过程 算法实现 算法执行结果 算法性能分析 参考 算法描述 快速排序又叫分区排序,它是一种平均性能非常好的排序方法.快速排序使用分治思想.这个算法优于归并算法,因为它在原位上排 ...

  8. 快速排序算法实现思想个人理解

    一.概述 快速排序是冒泡排序的改进算法.它也是通过不断比较和移动交换来实现排序的,只不过它的实现增大了记录的比较和移动的距离,将关键字较大的元素从前面直接放到后面,关键字较小的元素直接从后面放到前面, ...

  9. 快速排序算法(基于Java实现)

    title: 快速排序算法(基于Java实现) tags: 快速排序算法 快速排序算法的原理与代码实现: 一.快速排序算法的原理 快排算法的思想是: 如果需要排序数组中下标从p到r之间的一组数据,我们 ...

  10. java sort算法名称_快速排序算法(Quick Sort)(java)

    /** * 快速排序算法是基于分治策略的一种排序算法,下面是一个递归的快速排序. * @author liuy */ public class QuickSort { public static vo ...

最新文章

  1. vim block vim_如何不再害怕Vim
  2. 高速电路中的AC耦合电容
  3. expand yourself
  4. docker下,一行命令搭建elasticsearch6.5.0集群(带head插件和ik分词器)
  5. vim特殊符号的意义
  6. Python基础--线程
  7. 封包时发现的关于QIODevice类write函数的坑
  8. java存放的位置_java数据类型的种类以及存放的位置
  9. python3x完全兼容python2x_李亚涛:一台电脑python2x与python3x如何都可以用?
  10. 【元胞自动机】基于matlab元胞自动机人流疏散【含Matlab源码 665期】
  11. 3dmax用vr渲染还是cr渲染器?
  12. 推荐收藏:50个最佳机器学习公共数据集
  13. 【高性能计算背景】《并行计算教程简介》翻译 - 中文 - 1 / 4
  14. access2016与mysql_Access 2016数据库应用与开发
  15. iOS App上架遇到的错误(ERRORITMS-90096: )
  16. 两台WIN10电脑实现局域网文件共享
  17. Java Servlet3.0使用getPart/getParts实现单文件和多文件上传
  18. symmetric tree java_Symmetric Tree对称树
  19. 身份证扫描识别OCR技术的应用场景
  20. 菜鸟先飞之HQL语句的运用

热门文章

  1. python字典循环添加元素_牛鹭学院:学员笔记|python字典、列表、循环
  2. 解决windows预览体验计划页面空白问题
  3. Activiti用户指南之Activiti的API
  4. android shell 批量打包,Android执行shell命令打包
  5. 用c语言写代码_教你如何用android mvp分层架构优雅写代码
  6. 不能将参数转化为lparam_如何将管理需求转化为信息化方案
  7. a1在c语言里代指什么意思,A1考试宝典
  8. lnmp 备份mysql_mysql全量备份与增量备份
  9. 进入环境_大学新生,进入新环境该怎样和舍友、同学相处
  10. react 引入轮播插件_React.js实现轮播图