
它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果他们的顺序(如从大到小、首字母从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
}
参考资料:
百度百科——冒泡排序
冒泡排序是比较经典的排序算法。代码如下:
for(int i=1i<arr.lengthi++){
for(int j=1j<arr.length-ij++){
//交换位置
}
拓展资料:
原理:比较两个相邻的元素,将值大的元素交换至右端。
思路:依次比较相邻的两个数,将小数放在前面,大数放在后面。即在第一趟:首先比较第1个和第2个数,将小数放前,大数放后。然后比较第2个数和第3个数,将小数放前,大数放后,如此继续,直至比较最后两个数,将小数放前,大数放后。重复第一趟步骤,直至全部排序完成。
第一趟比较完成后,最后一个数一定是数组中最大的一个数,所以第二趟比较的时候最后一个数不参与比较;
第二趟比较完成后,倒数第二个数也一定是数组中第二大的数,所以第三趟比较的时候最后两个数不参与比较;
依次类推,每一趟比较次数-1;
……
举例说明:要排序数组:int[] arr={6,3,8,2,9,1}
for(int i=1i<arr.lengthi++){
for(int j=1j<arr.length-ij++){
//交换位置
}
参考资料:冒泡排序原理
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)