采纳哦
它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果他们的顺序(如从大到小、首字母从A到Z)错误就把他们交换过来。走访元素的工作是重复地进行直到没有相邻元素需要交换,也就是说该元素列已经排序完成。
冒泡排序算法的原理如下:
比较相邻的元素。如果第一个比第二个大,就交换他们两个。
对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。
针对所有的元素重复以上的步骤,除了最后一个。
持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
扩展资料:举例:C语言
#include&ltstdio.h&gt
#define ARR_LEN 255/*数组长度上限*/
#define elemType int/*元素类型*/
/*冒泡排序*/
/*1.从当前元素起,向后依次比较每一对相邻元素,若逆序则交换*/
/*2.对所有元素均重复以上步骤,直至最后一个元素*/
/*elemType arr[]:排序目标数组int len:元素个数*/
void bubbleSort(elemType arr[],int len){
elemType temp
int i,j
for(i=0i&ltlen-1i++)/*外循环为排序趟数,len个数进行len-1趟*/
for(j=0j&ltlen-1-ij++){/*内循环为每趟比较的次数,第i趟比较len-i次*/
if(arr[j]&gtarr[j+1]){/*相邻元素比较,若逆序则交换(升序为左大于右,降序反之)*/
temp=arr[j]
arr[j]=arr[j+1]
arr[j+1]=temp
}
}
}
int main(void){
elemType arr[ARR_LEN]={3,5,1,-7,4,9,-6,8,10,4}
int len=10
int i
bubbleSort(arr,len)
for(i=0i&ltleni++)
printf("%d\t",arr<i>)
putchar('\n')
return 0
}
参考资料:
百度百科——冒泡排序
冒泡排序的英文Bubble Sort,是一种最基础的交换排序。之所以叫做冒泡排序,因为每一个元素都可以像小气泡一样,根据自身大小一点一点向数组的一侧移动。
冒泡排序是一种简单的排序算法,它也是一种稳定排序算法。其实现原理是重复扫描待排序序列,并比较每一对相邻的元素,当该对元素顺序不正确时进行交换。一直重复这个过程,直到没有任何两个相邻元素可以交换,就表明完成了排序。
一般情况下,称某个排序算法稳定,指的是当待排序序列中有相同的元素时,它们的相对位置在排序前后不会发生改变。
泡排序的原理:
每一趟只能确定将一个数归位。即第一趟只能确定将末位上的数归位,第二趟只能将倒数第2位上的数归位,依次类推下去。如果有n个数进行排序,只需将n-1个数归位,也就是要进行n-1趟 *** 作。
而“每一趟”都需要从第一位开始进行相邻的两个数的比较,将较大的数放后面,比较完毕之后向后挪一位继续比较下面两个相邻的两个数大小关系,重复此步骤,直到最后一个还没归位的数。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)