源代码--数据结构与算法(Python版)chap10 排序

合集下载

python的排序方法

python的排序方法

python的排序方法Python的排序方法在计算机编程中,排序是一种常见的操作,它可以将一组数据按照某种规则进行排列。

Python作为一种强大的编程语言,提供了多种排序方法,可以满足不同的排序需求。

本文将介绍Python中常用的几种排序方法,并对它们的特点和适用场景进行详细说明。

一、冒泡排序冒泡排序是一种简单直观的排序方法,它通过相邻元素的比较和交换来实现排序。

具体实现过程如下:1. 比较相邻的两个元素,如果前一个元素大于后一个元素,则交换它们的位置。

2. 对每一对相邻元素重复以上步骤,从开始的第一对到结尾的最后一对。

这一轮比较结束后,最大的元素将被移动到最后。

3. 重复上述步骤,每次比较的元素减少一个,直到所有元素都排序完成。

冒泡排序的时间复杂度为O(n^2),适用于小规模数据的排序。

二、选择排序选择排序是一种简单直观的排序方法,它通过不断选择剩余元素中的最小值,并将其放置在已排序部分的末尾来实现排序。

具体实现过程如下:1. 在未排序序列中找到最小元素,将其放置在已排序序列的末尾。

2. 从剩余未排序序列中继续寻找最小元素,并将其放置在已排序序列的末尾。

3. 重复上述步骤,直到所有元素都排序完成。

选择排序的时间复杂度为O(n^2),适用于小规模数据的排序。

三、插入排序插入排序是一种简单直观的排序方法,它通过将一个元素插入到已排序部分的合适位置来实现排序。

具体实现过程如下:1. 从第一个元素开始,该元素可以认为已经被排序。

2. 取出下一个元素,在已经排序的元素序列中从后向前扫描。

3. 如果该元素(已排序)大于新元素,将该元素移到下一位置。

4. 重复上述步骤,直到找到已排序的元素小于或等于新元素的位置。

5. 将新元素插入到该位置后。

6. 重复上述步骤,直到所有元素都排序完成。

插入排序的时间复杂度为O(n^2),适用于小规模数据的排序。

四、快速排序快速排序是一种高效的排序方法,它使用了分治的思想。

具体实现过程如下:1. 选择一个基准元素。

数据结构课程设计各种排序算法比较附带源代码.doc

数据结构课程设计各种排序算法比较附带源代码.doc

数据结构课程设计各种排序算法比较附带源代码.课程设计课程:数据结构题目:排序算法比较专业班级:姓名:学号:设计时间:指导教师:设计题目排序算法比较运行环境(软、硬件环境)操作系统windows运行环境vc6.0算法设计的思想大架构采用模块化编程的思想,将每个不同的功能分别写成不同的子程序,分别进行封装构成各个小的模块,最后将各个模块组合起来。

在每个子程序的编写过程中特事特办面对不同的预想功能采取不同的数据结构不同的算法实现。

总体算法思想为按功能分块,依照预想功能实现顺序拼装。

具体思想请见流程图。

流程图开始功能流程图请用户输入将要生成随机数的上下限,按照上下限生成30000个随机数并输出随机生成随机数并输出请用户选择想要使用的排序方法计算其使用的排序时间并输出询问用户是否继续运行程序否是输出结束语句结束程序编写流程图开始定义全局变量a[30000],aaaa[3000],结构体数组aa[30000]用来存放随机数,choice,choice1编写各个子算法子函数,和时间选择函数,既菜单选择函数,部分需要声明的函数在头文件下声明。

各模块依据功能流程图组装结束算法流程图开始局部变量l,h收集上下限,sjs()将用户选择数值赋值于choice,将choice作为参数调用time(),用if语句判断选择将要调用的算法子函数main1()menu()choice1==1Choice1==2结束算法设计分析程序总体采用模块化设计,程序间通过传参和调用进行有机组合。

这样的总体布局将将各个功能隔离开来,每个模块负责每个模块的功能,使得程序的布局简单明了。

且子程序只有在被调用时才会运行大大节约系统资源减少了运算时间。

同时由于功能的隔离使得程序的扩展性大大提高,无论程序将要任何改动时,都会方便很多。

源代码#include#include#includeint a[30000];int choice;int choice1;struct xlx{ int key; int link;} aa[30000];int aaa[300000];void main1();/*************************直接插入排序函数***********************/void direct(int a[]){printf("\n现在使用直接插入排序法进行排序:\n");int i,j,w; for(i=0;i=0;j-数据结构题目:排序算法比较专业班级:姓名:学号:设计时间:指导教师:设计题目排序算法比较运行环境(软、硬件环境)操作系统windows运行环境vc6.0算法设计的思想大架构采用模块化编程的思想,将每个不同的功能分别写成不同的子程序,分别进行封装构成各个小的模块,最后将各个模块组合起来。

数据结构与算法实验源代码

数据结构与算法实验源代码

数据结构与算法实验源代码数据结构与算法实验源代码1.实验目的本实验旨在通过实践,加深对数据结构与算法的理解与应用能力,掌握数据结构和算法的基本概念与原理,并能够运用所学知识解决实际问题。

2.实验材料●一台已安装好编译器的计算机●数据结构与算法实验源代码文件3.实验环境配置在实验开始之前,必须确保计算机上已安装好以下环境:●编译器(可以是C++、Java等)●数据结构与算法实验源代码文件4.实验内容及步骤4.1 实验一:线性表4.1.1 实验目的通过实现线性表的相关操作,加深对线性表及其操作的理解,并能够灵活应用。

4.1.2 实验步骤1.实现线性表的初始化函数2.实现线性表的插入操作3.实现线性表的删除操作4.实现线性表的查找操作5.实现线性表的排序操作6.实现线性表的输出操作7.编写测试代码,对线性表进行测试4.1.3 实验结果与分析进行若干测试用例,验证线性表的正确性,并分析算法的时间复杂度与空间复杂度。

4.2 实验二:栈与队列4.2.1 实验目的通过实现栈与队列的相关操作,加深对栈与队列的理解,并掌握栈与队列的应用场景。

4.2.2 实验步骤1.实现栈的初始化函数2.实现栈的入栈操作3.实现栈的出栈操作4.实现栈的查看栈顶元素操作5.实现队列的初始化函数6.实现队列的入队操作7.实现队列的出队操作8.实现队列的查看队首元素操作4.2.3 实验结果与分析进行若干测试用例,验证栈与队列的正确性,并分析算法的时间复杂度与空间复杂度。

(继续添加实验内容及步骤,具体根据实验项目和教学要求进行详细分析)5.实验附件本文档所涉及的实验源代码文件作为附件随文档提供。

6.法律名词及注释6.1 版权:著作权法所规定的权利,保护作品的完整性和原创性。

6.2 开源:指软件可以被任何人免费使用、分发和修改的一种软件授权模式。

(继续添加法律名词及注释)。

数据结构与算法源代码

数据结构与算法源代码

课程说明:数据结构一共四天课程,day01~~~day04.CSD DataStructure DAY011.基于顺序表的堆栈2.基于链式表的堆栈1 基于顺序表的堆栈栈是一种特殊的线性表,是限定在线性表表尾进行插入删除操作的线性表。

由栈的概念衍生出几个子概念,它们是:1)栈顶,即允许进行插入、删除操作的一端,又称为表尾,用栈顶指针()来指示栈顶元素。

2)栈底,即固定端,又称为表头3)空栈,即栈当中没有数据元素。

顺序栈是采用顺序存储结构的栈,即使用一组连续的存储单元(一般使用数组)来模拟栈,依次存放栈中的数据元素。

1.1 方案顺序栈的基本操作包括:1) 初始化操作,在初始化操作中将建立一个空栈。

2) 判断栈空,判断栈中的数据元素个数是否为0。

3) 入栈,在栈中加入一个数据元素。

4) 出栈,在栈中删除一个数据元素。

5) 取栈顶元素,将栈顶元素取出,但并不在栈中删除该元素。

1.2 步骤实现此案例需要按照如下步骤进行。

步骤一:定义栈在C语言中:1)定义一个一维数组来表示栈的顺序存储空间。

2)定义一个变量来指出栈顶的位置。

3)这两方面的信息共同描述一个栈,可将它们用结构体封装在一起。

代码如下:1.#define LISTSIZE 102.typedef int DataType;3.struct Stack {4.DataType data[LISTSIZE];5.int;//除了记录大小还可以记录栈顶位置6.};上述代码中,以下代码:1.#define LISTSIZE 100是用一个宏常量来定义顺序表的容量,这样定义的好处是当需要修改顺序表的容量的时候,只需要修改该宏常量即可。

上述代码中,以下代码:1.typedef int DataType;是将数据类型int起了一个别名叫做DataType,并在后面的程序中只使用DataType,而不使用int。

这样做的好处是当堆栈中的数据类型发生变化时,只需要修改此句中的int 为要改变的数据类型,即可将程序中所有数据变量的数据类型变成指定的类型。

数据结构(C语言版CHAP10

数据结构(C语言版CHAP10
结束
分组方法:选定一增量d,将间隔为d的记录作为一组 例 待排记录 49 38 65 97 76 13 27 49 55 04 d=5 d=3 49 13 13 13 04 38 27 27 04 13 65 49 49 49 27 97 55 55 38 38 76 04 04 27 49 13 27 49 49 38 65 49 38 65 49 55 65 49 55 65 55 97 97 97 76 04 76 76 76 97
10.1
概 述
排序也是数据处理中经常使用的一种操作.例 高考考生信息管理 系统提供了将考生按总分排序,按单科排序的功能; 1 排序定义 设R1 R2 R3 … Rn 是n个记录,k1,k2, k3 … kn为它们的关键字,排序 就是将记录按关键字递增(或递减)的次序排列起来. 2 分类 按记录的存放位置分类有 内排序:待排记录放在内存 外排序:待排记录放在外存 按排序原则分类(内排序) 插入排序 交换排7,76,13,27,49 是待排序列
稳性排序的应用: 例 股票交易系统 考虑一种股票交易(清华紫光)) 1)顾客输入:股东帐号,股票代码,申购价格,数量,股票交易系统 将用户申购请求插入申购队列队尾; 2)股票交易系统按如下原则交易: A)申购价高者先成交 B)申购价相同者按申购时间先后顺序成交 结束 第 5 页
76 38 49 65 97 76 13 27 49
L.r[5]复制为哨兵 0 1 2 3 4 5 6 7 8 9
76 38 49 65 97 97 13 27 49
L.r[0].key < L.r[4].key, L.r[4]记录后移 L.r[0].key≥ L.r[3].key 找到插入位置 插入! 0 1 2 3 4 5 6 7 8 9

Python数据结构与算法(几种排序)

Python数据结构与算法(几种排序)

Python数据结构与算法(⼏种排序)冒泡排序冒泡排序(英语:Bubble Sort)是⼀种简单的排序算法。

它重复地遍历要排序的数列,⼀次⽐较两个元素,如果他们的顺序错误就把他们交换过来。

遍历数列的⼯作是重复地进⾏直到没有再需要交换,也就是说该数列已经排序完成。

这个算法的名字由来是因为越⼩的元素会经由交换慢慢“浮”到数列的顶端。

冒泡排序算法的运作如下:⽐较相邻的元素。

如果第⼀个⽐第⼆个⼤(升序),就交换他们两个。

对每⼀对相邻元素作同样的⼯作,从开始第⼀对到结尾的最后⼀对。

这步做完后,最后的元素会是最⼤的数。

针对所有的元素重复以上的步骤,除了最后⼀个。

持续每次对越来越少的元素重复上⾯的步骤,直到没有任何⼀对数字需要⽐较。

冒泡排序的分析交换过程图⽰(第⼀次):那么我们需要进⾏n-1次冒泡过程,每次对应的⽐较次数如下图所⽰:def bubble_sort(alist):for j in range(len(alist)-1,0,-1):# j表⽰每次遍历需要⽐较的次数,是逐渐减⼩的for i in range(j):if alist[i] > alist[i+1]:alist[i], alist[i+1] = alist[i+1], alist[i]li = [54,26,93,17,77,31,44,55,20]bubble_sort(li)print(li)时间复杂度最优时间复杂度:O(n) (表⽰遍历⼀次发现没有任何可以交换的元素,排序结束。

)最坏时间复杂度:O(n2)稳定性:稳定冒泡排序的演⽰效果:选择排序选择排序(Selection sort)是⼀种简单直观的排序算法。

它的⼯作原理如下。

⾸先在未排序序列中找到最⼩(⼤)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最⼩(⼤)元素,然后放到已排序序列的末尾。

以此类推,直到所有元素均排序完毕。

选择排序的主要优点与数据移动有关。

数据结构与算法实验源代码

数据结构与算法实验源代码

数据结构与算法实验源代码数据结构与算法实验源代码一、实验目的本实验旨在通过编写数据结构与算法的实验源代码,加深对数据结构与算法的理解,并提高编程能力。

二、实验环境本实验使用以下环境进行开发和测试:- 操作系统:Windows 10- 开发工具:IDEA(集成开发环境)- 编程语言:Java三、实验内容本实验包括以下章节:3.1 链表在本章节中,我们将实现链表数据结构,并实现基本的链表操作,包括插入节点、删除节点、查找节点等。

3.2 栈和队列在本章节中,我们将实现栈和队列数据结构,并实现栈和队列的基本操作,包括入栈、出栈、入队、出队等。

3.3 树在本章节中,我们将实现二叉树数据结构,并实现二叉树的基本操作,包括遍历树、搜索节点等。

3.4 图在本章节中,我们将实现图数据结构,并实现图的基本操作,包括广度优先搜索、深度优先搜索等。

3.5 排序算法在本章节中,我们将实现各种排序算法,包括冒泡排序、插入排序、选择排序、快速排序、归并排序等。

3.6 搜索算法在本章节中,我们将实现各种搜索算法,包括线性搜索、二分搜索、广度优先搜索、深度优先搜索等。

四、附件本文档附带实验源代码,包括实现数据结构和算法的Java源文件。

五、法律名词及注释5.1 数据结构(Data Structure):是指数据对象中数据元素之间的关系。

包括线性结构、树形结构、图形结构等。

5.2 算法(Algorithm):是指解决问题的一系列步骤或操作。

算法应满足正确性、可读性、健壮性、高效性等特点。

5.3 链表(Linked List):是一种常见的数据结构,由一系列节点组成,每个节点包含一个数据元素和一个指向下一个节点的指针。

5.4 栈(Stack):是一种遵循后进先出(LIFO)原则的有序集合,用于存储和获取数据。

5.5 队列(Queue):是一种遵循先进先出(FIFO)原则的有序集合,用于存储和获取数据。

5.6 树(Tree):是由节点组成的层级结构,其中一种节点作为根节点,其他节点按照父子关系连接。

数据结构之排序算法详解(含代码)

数据结构之排序算法详解(含代码)

C/C++版数据结构之排序算法今天讨论下数据结构中的排序算法。

排序算法的相关知识:(1)排序的概念:所谓排序就是要整理文件中的记录,使之按关键字递增(或者递减)次序罗列起来。

(2)稳定的排序方法:在待排序的文件中,若存在多个关键字相同的记录,经过排序后这些具有相同关键字的记录之间的相对次序保持不变,该排序方法是稳定的。

相反,如果发生改变,这种排序方法不稳定。

(3)排序算法的分类(分为5类):插入排序、选择排序、交换排序、归并排序和分配排序。

(4)排序算法两个基本操作:<1>比较关键字的大小。

<2>改变指向记录的指针或者挪移记录本身。

具体的排序方法:插入排序<1>插入排序(Insertion Sort)的思想:每次将一个待排序的记录按其关键字大小插入到前面已经排好序的子记录中的适当位置,直到全部记录插入完成为止。

<2>常用的插入排序方法有直接插入排序和希尔排序。

(1)直接插入排序<1>算法思路:把一个记录集(如一个数组)分成两部份,前半部份是有序区,后半部份是无序区;有序区一开始有一个元素r[0],无序区一开始是从r[1]到之后的所有元素;然后每次从无序区按顺序取一个元素r[i],拿到有序区中由后往前进行比较,每次比较时,有序区中比r[i]大的元素就往后挪移一位,直到找到小于r[i]的元素,这时r[i]插到小元素的后面,则完成一趟直接插入排序。

如此反复,从无序区不断取元素插入到有序区,直到无序区为空,则插入算法结束。

<2>算法演示://直接插入排序:#include<iostream>using namespace std;void InsertSort(int r[],int n);int main(){int r[]={24,1,56,2,14,58,15,89};InsertSort(r,8);for(int i=0;i<8;i++){cout<<r[i]<<' ';}cout<<endl;return0;}void InsertSort(int r[],int n){for(int i=1;i<n;i++){for(int j=i-1,s=r[i];s<r[j] && j>=0;j--){r[j+1]=r[j];}r[j+1]=s;}}复制代码(2)折半插入排序<1>算法思路:我们看到在直接插入排序算法中,需要在有序区查找比r[i]的小的元素,然后插入到这个元素后面,但这里要注意这个元素是从无序区算第一个比r[i]小的元素。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
20
交换类
(2)快速排序 快速排序采用分而治之(Divide and Conquer)
的策略将问题分解成若干个较小的子问题,采用 相同的方法一一解决后,再将子问题的结果整合 成最终答案。快速排序的每一轮处理其实就是将 这一的基准数定位,直到所有的数都排序完成 为止。
21
快速排序的基本步骤:
1. 选定一个基准值(通常可选第一个元素); 2. 将比基准值小的数值移到基准值左边,形
14
• 交换类
交换类排序的基本思想是:通过交换无序序列 中的记录得到其中关键字最小或最大的记录,并将 其加入到有序子序列中,最终形成有序序列。交换 类排序可分为冒泡排序和快速排序等。
15
交换类
(1)冒泡排序 两两比较待排序记录的关键字,发现两
个记录的次序相反时即进行交换,直到没有 反序的记录为止。因为元素会经由交换慢慢 浮到序列顶端,故称之为冒泡排序。
3. 最后对这个组进行插入排序。步长的选法 一般为 d1 约为 n/2,d2 为 d1 /2, d3 为 d2/2 ,…, di = 1。
11
【例】给定序列(11,9,84,32,92,26,58,91,35, 27,46,28,75,29,37,12 ),步长设为d1 =5、d2 =3、 d3 =1,希尔排序过程如下:
for i in range(1,len(alist)):
#外循环n-1
for j in range(i,0,-1):
#内循环
if alist[j]<alist[j-1]:
alist[j],alist[j-1]=alist[j-1],alist[j] #交换
li=[59,12,77,64,72,69,46,89,31,9] print('before: ',li) insert_sort(li) print('after: ',li)
第6轮比较 12 46 59 64 69 72 77 89 31 9
第7轮比较 12 46 59 64 69 72 77 89 31 9
第8轮比较 12 31 46 59 64 69 72 77 89 9
第9轮比较 9
12 31 46 59 64 69 72 77 89
4
直接插入排序代码
def insert_sort(alist):
16
冒泡排序的基本步骤:
1. 比较相邻的前后两个数据,如果前面数据 大于后面的数据,则将两个数据交换;
2. 这样对数组的第0个数据到n-1个数据进行 一次遍历后,最大的一个数据就移到数组 第n-1个位置;
3. n←n-1,如果n不为0就重复前面二步,否 则排序完成。
17
冒泡排序:
18
def bubble_sort(alist): for j in range(len(alist)-1,0,-1):
然后再以3为步长进行分组: 11,9 ,75 29,27,12 28,84,32 37,26,58 91,35,92
46 对每组进行排序:
11,9 ,12 28,26,32 29,27,58 37,35,75 46,84,92
91 将排序结果拼接在一起(11,9 ,12,28,26, 32,29,27,58,37,35,75,46,84,92, 91)
8
折半插入排序算法比直接插入算法明显 减少了关键字比较次数,因此速度比直接插 入排序算法有效,但插入时记录移动次数不 变。折半插入排序算法的时间复杂度仍然为 O(n2),与直接插入排序算法相同。
9
插入类
(3)希尔排序 希尔排序插入排序的另一个改进。插入排序
在对几乎已经排好序的数据操作时,效率高,复 杂度可降到O(n);但插入排序每次只能将数据移 动一位,效率较低。为此,希尔排序采用大跨步 间隔比较方式让记录跳跃式接近它的排序位置。
3. 重复执行直至low>high;将high+1作为插入 位置,此位置后所有元素后移一位,并将新 元素插入a[high+1]。
7
折半插入排序代码
def binary_sort(a): for i in range(0, len(a)): index = a[i] low = 0 hight = i - 1 while low <= hight: mid = (low + hight) // 2 if index > a[mid]: low = mid + 1 else: hight = mid - 1 for j in range(i, low, -1): a[j] = a[j - 1] a[low] = index
10
希尔排序的基本流程:
1. 先取一个正整数 d1(d1 < n)作为步长,把 全部记录分成d1组,所有距离为 d1 的倍 数的记录看作一组,然后在各组内进行插 入排序;
2. 取更小的步长 d2(d2 < d1),重复上述 分组和排序操作,直到取 di = 1(i >= 1) 为 止,即所有记录成为一个组;
设给定数组a[0…n-1],直接插入排序的过程如下: • 步骤1:初始时,a[0]自成1个有序区,无序区为 a[1..n-1]; • 步骤2:令i=1,将a[i]并入当前的有序区a[0…i-1]中 形成a[0…i]的有序区间;
• 步骤3:i++并重复第二步直到i=n-1,排序完成。
3
插入类
原始数组 59 12 77 64 72 69 46 89 31 9
23
第一次交换:按照第3步从右向左找到a[j]<key的值 j=6,按照第4步从左向右找到a[i]>key的值i=2,a[j] 和a[i]两者交换,如下图
24
第二次交换:按照第3步从右向左找到a[j]<key的值 j=5;按照第4步从左向右找到a[i]>key的值i=2,a[j] 和a[i]两者交换,如下图
12
最后以1步长进行排序(此时就是简单的插入 排序了),最终排序结果为: (9,11,12,26,27,28,29,32,35, 37,46,58,75,84,92,91)
13
希尔排序代码
def shell_sort(alist): n=len(alist) gap=n//2 while gap>0: for i in range(gap,n): j=i while j>=gap and alist[j-gap]>alist[j]: alist[j-gap],alist[j]=alist[j],alist[j-gap] j-=gap gap =gap//2
19
冒泡排序所需的比较次数和记录移动次 数的最小值为n-1和0。冒泡排序最低时间复 杂度为O(n)。最坏需要进行n-1趟排序,每趟 排序要进行n-i次关键字的比较(1≤i≤n-1),且 每次比较都必须移动记录三次来达到交换记 录位置,在这种情况下,比较和移动次数均 达到最大值O(n(n-1)/2)=O(n2)和O(n2),冒泡 排序的最坏时间复杂度为O(n2)。 综上,冒泡排序总的平均时间复杂度为O(n2)
#外循环 for i in range(j):
#内循环 if alist[i]>alist[i+1]: alist[i],alist[i+1]=alist[i+1],alist[i]
li=[54,26,93,17,77,31,44,55,20] print('before: ',li) bubble_sort(li) print('after: ',li)
第1轮比较 12 59 77 64 72 69 46 89 31 9
第2轮比较 12 59 77 64 72 69 46 89 31 9
第3轮比较 12 59 64 77 72 69 46 89 31 9
第4轮比较 12 59 64 72 77 69 46 89 31 9
第5轮比较 12 59 64 69 72 77 46 89 31 9
第一轮以步长d1=5开始分组,分 组情况如下(每列代表一组):
11,9 ,84,32,92 26,58,91,35,27 46,28,75,29,37
12 对每组进行排序:
11,9 ,75,29,27 12,28,84,32,37 26,58,91,35,92
46 将排序结果拼接在一起(11,9, 75,29,27,12,28,84,32, 37,26,58,91,35,92,46)
右边序列“81,99,61”也模拟刚才的过程,最终 将会得到这样的序列:61,81,99
到此,排序完全结束。综合可得排序后的序列为: 14,30,36,48,61,81,99
26
快速排序代码:
def quick_sort(alist ,start,end): if start>=end: return mid =alist[start] low=start high =end while low < high: while low<high and alist[high]>=mid: high -=1 alist[low]=alist[high] while low<high and alist[low]<mid: low +=1 alist[high]=alist[low] alist[low]=mid quick_sort(alist ,start,low-1) quick_sort(alist ,low+1,end)
成左子序列; 3. 将比基准值大的数值移到基准值右边,形
成右子序列; 4. 分别对左子序列、右子序列执行以上三步
(递归),直到左子序列或右子序列只剩 一个数值或没有数值位置;
22
【例】对a=(48,36,61,99,81,14,30)进 行快速排序。
相关文档
最新文档