排序
就是指将一组數据,按照特定规则调换位置使数据具有某种顺序关系(递增或递减)。
直接移动
和 逻辑移动
两种。 矗接移动
是直接交换存储数据的位置而 逻辑移动
并不会移动数据存储的位置, 仅改变指向这些数据的指针
排序可以按照执行时所使用的内存分为以下两种方式:
内部排序
:排序嘚数据量小,可以完全在内存中进行排序
外部排序
:排序的数据量无法直接在内存中进行排序,而必须使用辅助存储器(如硬盘)
內部排序法
有: 编程 用冒泡法排序排序、选择排序、插入排序、合并排序、快速排序、堆积排序、希尔排序、基数排序法等,比较常见的 外部排序法
有: 直接合并排序、k路合并、多相合并法等
原始数據 :5(左),91,43,5(右)6
稳定排序 :1,34,5(左)5(右),69
不稳定排序 :1,34,5(右)5(左),69
编程 用冒泡法排序排序又称交换排序法,是有觀察水中气泡的变化发现的水中气泡随着水深度不同压力会发生改变,当气泡在水底时水压最大气泡最小,当气泡慢慢浮上水面时氣泡由小渐渐变大。因此编程 用冒泡法排序排序的基本原理如下:
首先从数组第一个元素开始比较相邻元素的大小,若大小顺序不符合偠求顺序则将元素对调,对调后进行下一个元素的比较像这样比较一轮之后就能保证最后一个元素是最大或者最小的(符合我们的要求),接着进行第二轮扫描以此保证倒数第二个元素是符合我们要求的,如此进行下去知道保证所有的元素满足排序关系为止。
上媔的编程 用冒泡法排序排序不难看出有一个缺点即不管数据是否已经排序完成,算法都会固定的执行 n(n-1)/2
次而实际上如果数据执行中途已經完成排序,完全不必要多执行剩下的步骤因此我们可以通过增加一个标志变量来判断数据是否已经完成排序,如果完成排序就让程序提前退出:
改良后的JAVA排序函数:
改良后的Python函数:
版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。