排序的功能:用户提出要求,电脑根据用户要求把那些记录排列出来,给用户带来放方便。
排序的基本操作:1、比较关键字的大小;2、将记录从一个位置移动到另一个位置。理解“基本”一词。后面详讲关键字。
内部排序:要排序的数据都在内存中,称为内部排序。五大排序都是内部排序。
外部排序:要排序的数据一部分在内存上,一部分在外存上。需要清楚的时,CPU不能直接访问外存,什么意思呢?也就是说,对外部的数据进行排列的时候,也是先把它们调到内存中,但是,它们的顺序却是整个(包括内存和外存)数据的序列。
五(八)大排序的总纲图:
常见八排序就是五大排序,只不过,有些排序升级了,这种升级针对的是处理不同情况的升级,并不是之前的版本不如升级版(看情况)。例如:原先一个排序方法,在数据少时,非常的使用,但是,在处理大量数据时就不行了,于是,我们针对这种情况,我们找到一个更好的方法,当然,这种的好只能在处理大量是数据时体现,在处理少量数据时,他就不如之前的方法好。
1、直接插入排序
待排序的数据,我们把它分成两类,一类是按要求拍好了的,一类没有排好;初始排好类中只有一个数据,然后,我们按一定的次序从没有排好的类中拿出一个数据,让这个数据和排好类中的数据比较大小,找到合适的位置后,就进行位置的改变;依次类推,知道没排好的类中没有数据为止。
2、希尔排序
你想一下,一组从小到大排好的数据,你再用直接插入排序把它从大到小的排一次,是十分的麻烦:每排一个数据,这个数据就会插入在排好类中的最头,那么之前排好类中的数据就要都移动(或采取别的麻烦的方法来达到效果);希尔排序就很好的解决了这种麻烦,希尔排序的就是先把一定间隔的数据组成一组,这样把所有数据组成了多组,然后在这一组中采用直接插入排序方法排序,每组内排好后,再把一定间隔的数据组成一组……注意:一定的间隔的含义是间隔越来越小,直到间隔为1,也就是所有数据组成一组为止,间隔必须为奇数,因为我要保证间隔最后为1。
3、简单选择排序
把要排序的数据分成两类,一类是排好类,另一类是待排类,初始时,我们默认排好类中没有排好的数据,我们从待排类中按一定的顺序选择一个数据,这个数据在待排类中是通过比较得出来的,然后把它放入排好类中,再从待排类中选择一个数据,这个数据在待排类中是通过比较得出来的,以此类推,知道待排类中没有数据为止。这个和直接插入法的区别是:直接插入法,从待排类中选择的数据,没有在待排类中比较,而是,让他和排好类中的数据进行比较;简单选择排序,从待排类中选择的数据,是经过在待排类中比较得来的,不用再在排好类中比较了。
4、堆排序
中心思想:我们把存放在内存中数据,把数据形成完全二叉树的形式,这个完全二叉树的特点:双亲大于孩子(大顶堆)或孩子大于双亲(小顶堆),递归思想的定义。然后,我们把根和最后(根中序号最大)的一个结点进行交换,并且把除最后的那个结点外的所有结点在排成一个堆,然后,再交换,以此类推。代码的实现思想:建立符合要求的完全二叉树,然后,交换结点,再建立符合要求的完全二叉树。代码的实现采用了递归的思想,所以,一定要找到规律。
下接:五大排序(二)
分享到:
相关推荐
python五大排序-五大排序算法(Python),算法数据结构 五大常用算法
插入排序 归并排序 堆排序 快速排序 基数排序
提供五种排序算法的C++实现方法,输入(待排序元素个数、排序码上界(采用随机生成数组方式)),可选择输出(原始数组、排序后数组、原始数组有序度和无序度、排序过程中数据比较次数与数据移动次数、数组中出现...
冒泡,选择,插入,Shell,快速排序的算法与实例
使用Python实现五大排序算法,算法数据结构 五大常用算法
c++的几种常见的大小排序的算法的模板,包括冒泡排序、选择排序、木桶排序、快速排序等,这些不同的算法的复杂度和效率也不同,里面有说明
Matlab实现五大排序算法(冒泡、插入、选择、合并、快速) Test文件为测试文件,打开测试文件,要测试某个算法就把它的函数名前的"%"注释符去掉。
基础五大排序算法(冒泡+排序+插入+希尔+快速)简述,算法数据结构 五大常用算法
任输入五个国家的名字,按由小到大排序
五大基本排序算法,算法数据结构(02) 五大常用算法
五大基本排序算法,算法数据结构(01) 五大常用算法
假设要排序的数组是A[1]……A[N],首先任意选取一个数据(通常选用第一个数据)作为关键数据,然后将所有比它的数都放到它前面,所有比它大的数都放到它后面,这个过程称为一躺快速排序。一躺快速排序的算法是: ...
1) 至少采用五种方法实现上述问题求解(提示,可采用的方法有插入排序、希尔排序、起泡排序、快速排序、选择排序、堆排序、归并排序)。并把排序后的结果保存在不同的文件中。 2) 统计每一种排序方法的性能(以上机...
数字排序法:通常来说有五大类方法:插入排序(直接插入排序、希尔排序等)、交换排序(冒泡排序、快速排序)、选择排序(简单选择排序、树形选择排序、堆排序)、归并排序、基数排序
数据结构中经典的5种排序方法,简单排序 快速排序 冒泡排序 希尔排序 直接插入排序,共有5个CPP文件,每个文件包含一种算法,运行的时候可把其他的注释掉,直接运行其中一个既可。
本例依然采取生成10个随机整数的方式取得数据,然后用选择法对这10个整数进行从小到大的排序。实现过程: 一、新建表单,向表单添加一个编辑框控件及三个命令按钮,按上图设置这三个命令按钮的caption属性。 ...
将文本框的字符串进行拆分为数组,在进行排序
// 归并排序// 存放LEN个随机数// 排序后的数组// 归并用的数组// 产生1-100的随机数// 输出随机值// 冒泡// 选择排序// 插入排序,d
“Java输入五个数,保存到一个数组中,然后将这五个数字进行从小到大的排列 采用冒泡排序法,如下:package com.test;import java.util.Arrays;import java.util.Scanner;public class TestA { public ...”
算法课程实验一五种排序算法的分析比较实验目的掌握选择排序、插入排序、冒泡排序、快速排序、归并排序五种排序算法原理,并实现上述算法;