排序相关的的基本概念
排序:
将一组杂乱无章的数据按一定的规律顺次排列起来。
数据表( data list): 它是待排序数据对象的有限集合。
排序码(key):通常数据对象有多个属性域,即多个数据成员组成,其中有一个属性域可用来区分对象,作为排序依据。该域即为排序码。每个数据表用哪个属性域作为排序码,要视具体的应用需要而定。
交换排序
交换排序的基本思想是:两两比较待排序记录(数据表)的关键字(排序码),发现两个记录的次序相反时即进行交换,直到没有反序的记录为止。主要包括冒泡排序和快速排序。
现在,我们先一起来看看交换排序 之 冒泡排序
冒泡排序的原理
比较相邻的元素。如果第一个比第二个大,就交换他们两个。
对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。
针对所有的元素重复以上的步骤,除了最后一个。
持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
一听到冒泡这个词,大家可能会想到?
对,没错,我们可以把冒泡排序看成生活中冒气泡的方式,从下往上冒,依次把最大或最小的值冒到最顶层。
例如:有一个整型数组int[] nums = {84,83,88,87,61};
其排序后的结果,如图:
接下来,我们更进一步来分析它的比较过程:
冒泡排序的代码实现
i : 控制第几轮,如果5个数,最多就比较4轮,所以i的索引从0开始的话,要循环4次,就应该是长度-1
j: 控制每一轮中的元素下标位置,每结束一轮,就会出来一个当前这轮中的最大值,则减i,之所以再减1,是因为最后剩一个元素的时候没有相邻的数与其分组,所以不用再比较了
以上则是交换排序之冒泡排序的算法原理和具体实现步骤,敬请期待java中的其他排序算法