
排序
文章平均质量分 69
QiaoRuoZhuo
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
桶排序、计数排序和基数排序比较分析
一、桶排序1. 算法思想:桶排序是将待排序序列中处于相同值域的元素存入同一个桶中,即将一个数据表分割成许多桶,然后每个桶中的元素各自排序。它采用分治策略,是一种分布式的排序方法。2. 算法过程:(1)根据待排序序列中最大元素和最小元素的差值和映射规则,确定申请的桶个数;(2)遍历待排序序列,将每一个元素存储到对应的桶中;(3)分别对每一个桶中元素进行排序,并存储到原序列中,获得...原创 2020-01-19 23:15:52 · 488 阅读 · 0 评论 -
使用移位代替交换操作的几个典型案例分析
使用移位代替交换操作的几个典型案例分析(巧若拙出品,欢迎转载,请注明出处)交换变量值是编程中的基本操作,它通常由3个赋值语句组成。正是因为每次交换操作都需要执行3条赋值语句,效率不算高,所以在有些情况下我们使用移位来代替交换操作,以提高工作效率。例1.插入排序。我们都知道经典的插入排序是采用向后移动元素的方式腾出插入位置,以便将被插入的元素a(i)放到正确的位置上去。事实上也可以用类似...原创 2019-10-25 11:04:42 · 929 阅读 · 1 评论 -
Python基础算法学习讲义之冒泡排序算法
冒泡排序算法基础冒泡排序例题1.使用冒泡排序算法对列表a升序排序。函数名:bubble_sort(a)参数表:a -- 待排序列表。返回值:该方法没有返回值,但是会对列表的对象进行升序排序。算法思想:外层循环累计排序轮数,同时控制待排序数组的右边界,即a[0..i]为待排序部分;内层循环扫描a[0..i-1],比较相邻元素,并通过交换元素值的方式将最大值冒泡到最右端def ...原创 2019-10-22 22:37:39 · 466 阅读 · 0 评论 -
Python基础算法学习讲义之选择排序算法
选择排序算法经典选择排序例题1.使用选择排序算法对列表a升序排序。函数名:selection_sort(a)参数表:a -- 待排序列表。返回值:该方法没有返回值,但是会对列表的对象进行升序排序。算法思想:外层循环控制待排序数组的左边界,即a[i:]为待排序部分;内层循环扫描a[i+1:],找到最小元素的下标def selection_sort(a): for i...原创 2019-10-22 22:36:36 · 540 阅读 · 0 评论 -
冒泡排序算法及其优化(Python)
#!/usr/bin/python3# -*- coding: UTF-8 -*-import random'''冒泡排序算法及其优化冒泡排序的基本特征是只能交换相邻的元素。从下边界开始,一趟扫描下来,可以把当前最大值顶到上边界;如果没有发生交换操作,则表示数组是有序的。'''#算法一:基本冒泡排序def BubbleSort_1(arr): #外层循环累计排序轮数原创 2018-01-07 21:48:09 · 5188 阅读 · 0 评论 -
7620_区间合并
/* Name:7620_区间合并 Copyright: Author: Date: 23-01-18 14:48 Description: 7620_区间合并查看 提交 统计 提问总时间限制: 1000ms 内存限制: 65536kB描述给定 n 个闭区间 [ai; bi],其中i=1,2,...,n。任意两个相邻或相交的闭区间可以合并为一个闭区间。例如,[1;2] 和原创 2018-01-23 15:47:38 · 682 阅读 · 0 评论 -
求第k小元素的快速排序算法
/* Name: 第k小元素 Copyright: Author: Date: 13-04-17 15:28 Description: 求一列数中的第k小元素,利用分治的策略进行递归求解。 模仿快速排序法的思路,只不过每次只递归处理第k小元素所在的序列。 使用消除尾递归优化后效果更好。 */#include#include#include#include原创 2018-01-13 22:16:47 · 1142 阅读 · 0 评论 -
快速排序算法(python)
#!/usr/bin/python3# -*- coding: UTF-8 -*- ''''' 快速排序算法 快速排序的基本思想是通过一趟排序将待排序列分割成独立的两个子序列,然后分别对这两个子序列分别快速排序,以达到整个序列有序。 假设待排序序列为a[low:high+1],从中任选一个元素值作为枢纽,再分别从左右两端向中间扫描,通过交换操作将不大于和不小于枢纽的元素分别置于左原创 2018-01-11 16:21:08 · 692 阅读 · 0 评论 -
快速排序算法析疑
/* Name: 快速排序算法析疑 Copyright: Author: 巧若拙 Date: 13-01-18 15:38 Description:快速排序算法 快速排序的基本思想是通过一趟排序将待排序列分割成独立的两个子序列,然后分别对这两个子序列分别快速排序,以达到整个序列有序。 假设待排序序列为a[low:high+1],从中任选一个元素值作为枢纽,再分别从左右两端向中间扫原创 2018-01-13 19:50:03 · 304 阅读 · 0 评论 -
Python冒泡排序的故事
Python冒泡排序的故事作者:巧若拙 年关将近,丐帮各分舵派代表前往总舵向帮主进贡。只见帮主门前立了一列梅花桩,各分舵代表立于桩上,等待帮主接见。(梅花桩上的数字代表梅花桩的编号,代表身上的数字代表其布袋数量,布袋数量越多辈分越高)此时各代表所在位置如图示: 总管传话,请辈分最高的代表站到最前面(右边)来,其他人依次按辈分大小排队,排队期间禁止喧哗,并不得掉下梅花桩。看官您也许会说,辈分最高的代...原创 2018-03-28 14:38:14 · 358 阅读 · 0 评论 -
python快速排序算法集锦
#!/usr/bin/python3# -*- coding: UTF-8 -*-import random import time ''''' 快速排序算法 ”在各种基于关键码比较的内排序算法中,快速排序是实践中平均速度最快的算法之一。快速排序算法最基本的思想是划分,即按照某种标准将待排序列分割成独立的两个子序列(分别称为“小记录”和大记录“),然后分别对这两个子序列分别快...原创 2018-04-05 14:29:04 · 516 阅读 · 0 评论 -
Python插入排序的故事
Python插入排序的故事余姚二中 梁见斌话说计算机世界有一个诚实国,那里的人们不但诚实,而且尊老,每次排队都让年纪大的人排前面。有一次小胖到诚实国去旅游,肚子饿了想吃东西,发现一个烧饼店门前有人排着队,他就跟在队伍后面一起排队。没过多久,又来了一个人,站在小胖后面,并问他:“小伙子,你今年多大?”“26,怎么啦?”“26?那你得排在我后面,我今年38啦。”“为什么?明明是我先来的,先来后到你不懂...原创 2018-04-06 18:06:24 · 440 阅读 · 0 评论 -
循环升序排序
/* Name: 循环升序排序 Copyright: Author: 巧若拙 Date: 21-12-18 16:37 Description: 循环排序。任意生成10个[1,100]之间的整数,编程实现将这10个数进行循环升序排序,即首尾相连后是一个升序序列。要求第一个最小(大)值位置不变,然后依次进行排列。*/#include<iost...原创 2018-12-21 16:33:04 · 1212 阅读 · 0 评论 -
贪心算法之智力大冲浪
#!/usr/bin/python3# 文件名: 贪心算法之智力大冲浪# 作者:巧若拙# 时间:2018-12-29'''智力大冲浪(riddle.pas)。【题目描述】小伟报名参加中央电视台的智力大冲浪节目。本次挑战赛吸引了众多参赛者,主持人为了表彰大家的勇气,先奖励每个参赛者m元。先不要太高兴!因为这些钱还不一定都是你的。接下来主持人宣布了比赛规则:首先,比赛时间分为n个时...原创 2018-12-30 23:47:08 · 918 阅读 · 0 评论 -
两项竞赛总分
# -*- coding: utf-8 -*-"""Created on Wed Mar 27 19:42:56 2019@author: 巧若拙某学校使用“两项竞赛”对各班级的日常表现进行评比,规则如下:记录各个班级的纪律和卫生得分,根据得分分别计算纪律和卫生名次(得分越高排名越前,得分相同,名次也相同);再根据两项竞赛的名次计算总分(总分=纪律名次+卫生名次);最后计算总分的...原创 2019-03-27 23:28:32 · 521 阅读 · 0 评论 -
如何更好地理解希尔排序算法
如何更好地理解希尔排序算法巧若拙(欢迎转载,但请注明出处:http://blog.youkuaiyun.com/qiaoruozhuo)希尔排序是希尔(Donald Shell)于1959年提出的一种排序算法。希尔排序也是一种插入排序,它是简单插入排序经过改进之后的一个更高效的版本,也称为缩小增量排序,同时该算法是冲破O(n ^2)的第一批算法之一。为什么希尔排序算法的效率会比简单插入排序高?如何理...原创 2019-08-08 09:59:00 · 414 阅读 · 0 评论 -
06_校门外的树
/* Name: 06_校门外的树 Author: 巧若拙 Description: 描述某校大门外长度为L的马路上有一排树,每两棵相邻的树之间的间隔都是1米。我们可以把马路看成一个数轴,马路的一端在数轴0的位置,另一端在L的位置;数轴上的每个整数点,即0,1,2,……,L,都种有一棵树。由于马路上有一些区域要用来建地铁。这些区域用它们在数轴上的起始点和终止点表示。已知任一区域的起原创 2017-08-22 21:58:26 · 1225 阅读 · 0 评论 -
02_奇数单增序列
/* Name: 02_奇数单增序列 Author: 巧若拙 Description: 描述给定一个长度为N(不大于500)的正整数序列,请将其中的所有奇数取出,并按升序输出。输入共2行:第1行为 N;第2行为 N 个正整数,其间用空格间隔。输出增序输出的奇数序列,数据之间以逗号间隔。数据保证至少有一个奇数。样例输入101 3 2 6 5 4 9 8 7 10样例原创 2017-08-18 17:26:15 · 4656 阅读 · 0 评论 -
08_病人排队
/* Name: 08_病人排队 Author: 巧若拙 Description:描述病人登记看病,编写一个程序,将登记的病人按照以下原则排出看病的先后顺序: 1. 老年人(年龄 >= 60岁)比非老年人优先看病。 2. 老年人按年龄从大到小的顺序看病,年龄相同的按登记的先后顺序排序。 3. 非老年人按登记的先后顺序看病。输入第1行,输入一个小于100的正整数,表示病人的个原创 2017-08-18 17:25:12 · 4771 阅读 · 0 评论 -
算法进化历程之“水壶问题”
《算法导论》中提到的经典水壶问题。采用了三个不同的版本来实现,喜欢快速排序及其变例的朋友应该会喜欢。原创 2014-10-25 18:05:29 · 2929 阅读 · 0 评论 -
算法进化历程之“快速排序”
快速排序是在实践中最快的已知排序算法,它的版本非常多,本文将给出常见的一些版本并分析其优化过程。总共10个版本,看起来很过瘾哦!由于是借鉴各种书籍后,自己再重新编写的,所以有可能有些地方会有小问题,欢迎批评指正。原创 2014-10-15 23:15:47 · 1057 阅读 · 0 评论 -
选择排序法及其优化
选择排序法及其优化巧若拙 选择排序基础算法是每一趟从待排序的数据元素中选出最小(或最大)的一个元素,顺序放在已排好序的数列的最后,直到全部待排序的数据元素排完。选择排序基础算法代码如下:void SelectSort_1(int vec[], int n) //选择排序基础算法 { inti, j, min; inttemp;原创 2014-09-09 18:12:46 · 1073 阅读 · 0 评论 -
各种插入排序算法小结
各种插入排序算法小结巧若拙直接插入排序是将元素vec[i]插入到有序序列vec[0..i-1], 依次将vec[i]与vec[i-1],vec[i-2],...进行比较,找到插入位置即将vec[i]插入,原来位置上的对象向后顺移。直接插入算法代码如下:voidInsertSort_1(int vec[], int n) //直接插入排序 { int i, j;原创 2014-09-06 11:50:32 · 1232 阅读 · 1 评论 -
算法进化历程之“归并排序”
归并排序是分治算法的典型运用,其中先分治,再合并的思路真是美妙至极。本文介绍了递归和非递归两种归并排序的实现方法,其中非递归算法和高效的合并函数属本人原创,虽然经过小规模数据的测试,但也可能存在纰漏,欢迎批评指正,谢谢!原创 2014-10-18 10:26:19 · 903 阅读 · 0 评论 -
c语言趣题之“选美比赛”
在选美大奖赛的半决赛现场,有一批选手参加比赛,比赛的规则是最后的得分越高,名次越低。当半决赛结束时,要在现场按照选手的出场顺序宣布最后得分和最后名次,获得相同分数的选手具有相同的名次,名次连续编号,不要考虑同名次的选手人数。原创 2014-12-30 15:42:57 · 3260 阅读 · 0 评论 -
文件操作演示
/* Name: 文件操作演示 Copyright: Author: Date: 05-01-15 21:33 Description: 从文件中读入文章并分解单词 */#include#include#include#define MAX 10000struct { char word[60];//存储单词的字符串 int num; //单原创 2015-01-05 22:01:17 · 638 阅读 · 0 评论 -
荷兰国旗算法及其拓展
一排木桶里分别装有红白蓝三色小球(分别用0,1,2表示),如何让所有的'0'出现在前面,所有的'1'在中间,所有的'2'在最后。要求:要求空间复杂度为O(1),只许遍历一遍字符串数组。我们可以把该算法扩展到将COLORNUM个不同颜色的小球(数字)按顺序归类,只需要不断地把左右边界往中间移动就行。原创 2016-10-10 08:42:22 · 741 阅读 · 0 评论 -
浅议冒泡排序及其优化方法
浅议冒泡排序及其优化方法冒泡排序法是一种简单的排序方法,不仅代码简短,排序思路也简单易懂,是一种容易被初学者接受的基本排序方法。但正因为冒泡排序代码简短,很多同学在学习该排序方法时只是很快记住了教科书中的例程,并没有吃透代码中两层循环的作用;而且一般教科书中给出的是最基本的编码,算法时间复杂度高,排序效率低。本文旨在分析冒泡排序法的基本思想,并分析如何对算法进行优化。冒泡法模拟水中气泡网上原创 2014-08-29 23:44:30 · 903 阅读 · 0 评论 -
分治法求第k小元素
模仿快速排序法的思路,只不过每次只递归处理第k小元素所在的序列。 要注意每次都应该减少搜索的范围,避免因为随机数不随机而导致的死循环原创 2017-04-14 07:49:31 · 2853 阅读 · 0 评论 -
07_有趣的跳跃
/* Name: 07_有趣的跳跃 Copyright: Author: Date: 15-08-17 08:19 Description: 07_有趣的跳跃查看 提交 统计 提问总时间限制: 1000ms 内存限制: 65536kB描述一个长度为n(n>0)的序列中存在“有趣的跳跃”当前仅当相邻元素的差的绝对值经过排序后正好是从1到(n-1)。例如,1 4 2 3存在“有原创 2017-08-16 10:43:37 · 5982 阅读 · 0 评论 -
09_直方图
/* Name: 09_直方图 Copyright: Author: Date: 16-08-17 11:26 Description: 09_直方图查看 提交 统计 提问总时间限制: 1000ms 内存限制: 65536kB描述给定一个非负整数数组,统计里面每一个数的出现次数。我们只统计到数组里最大的数。假设 Fmax (Fmax < 10000)是数组里最大的数,那么我原创 2017-08-16 12:14:05 · 1261 阅读 · 0 评论 -
简单排序算法
/* Name: 简单排序算法 Author: 巧若拙 Description: 简单排序算法函数1:用冒泡排序法对数组A进行排序(非递减序列) 函数2:用选择排序法对数组A进行排序(非递减序列) 函数3:用插入排序法对数组A进行排序(非递减序列) 函数4:用桶排序法对数组A进行排序(非递减序列) */#include using namespace std;const原创 2017-08-18 17:12:38 · 539 阅读 · 0 评论 -
数组专题讲义之简单排序算法
专题二 简单排序算法阅读代码,回答下列问题:#include using namespace std;const int M = 100;const int N = 10;int T[N+1];//桶排序专用数组(元素值为0-N的整数)void PrintArray(const int A[], int low, int high); //输出数组A中区域[low,high]的元原创 2017-08-18 17:16:02 · 883 阅读 · 0 评论 -
07_合影效果
/* Name: 07_合影效果 Author: 巧若拙 Description:描述小云和朋友们去爬香山,为美丽的景色所陶醉,想合影留念。如果他们站成一排,男生全部在左(从拍照者的角度),并按照从矮到高的顺序从左到右排,女生全部在右,并按照从高到矮的顺序从左到右排,请问他们合影的效果是什么样的(所有人的身高都不同)?输入第一行是人数n(2 <= n <= 40,且至少有1个男生原创 2017-08-18 17:17:07 · 2739 阅读 · 0 评论 -
《大话数据结构》读书笔记之二叉堆基本操作(最大堆)
/*Name: 二叉堆基本操作(最大堆) Copyright: Author: 巧若拙 Date: 24-09-14 20:26Description: 实现的最大堆的基本操作,包括向上,或向下调整二叉堆的第pos个元素,使其满足最大堆的特征;构造最大堆,利用最大堆进行堆排序和找第k大的数。如果要构造最小堆,则只需改变一下调整二叉堆时判断的条件即可。 */原创 2014-09-25 20:36:59 · 848 阅读 · 0 评论