冒泡排序法

排序——冒泡排序法

霸气de小男生 提交于 2019-12-01 00:01:16
一、冒泡排序法概述 冒泡排序法的基本思想是:对待排序记录关键字从后往前(逆序)进行多遍扫描,当发现相邻两个关键字的次序与排序要求的规则不符时,就将这两个记录进行交换。这样,关键字较小的记录将逐渐从后面向前面移动,就像气泡在水中向上浮一样,所以该算法也称为气泡排序法。(提示:冒泡排序法也可使较大的记录排在前面) 假设需要排序的记录有n个,其关键字保存在数组a中,使用冒泡排序法,需对数组a进行n-1次扫描,完成排序操作,具体过程如下: (1)将A[n]与A[n-1]进行比较,若A[n]<A[n-1],则交换两元素的位置。 (2)修改数组下标,使需要比较的两个元素为A[n-1]和A[n-2],重复步骤1,对这两个元素进行比较。重复这个过程,直到对A[2]和A[1]进行比较完为止。完成第1遍扫描,如下图所示。 3)经过第1遍扫描后,最小的元素已经像气泡一样“浮”到最上面,即位于元素A[1]中了。接下来重复前面的步骤,进行第2遍扫描,只是扫描到A[3]与A[2]进行比较完为止(因为A[1]中已经是最小的数据,不用再进行比较)。 (4)通过n-1遍扫描,前n-1个数都已经排序完成,最后一个元素A[n]肯定就是最大的数了。至此,完成排序操作。(提示:在以上描述中,为了让读者容易理解,假设数组元素是保存在A[1]~A[n]中的,由于C语言的数组元素下标是从0开始的,因此,需要修改数组的下标)