冒泡排序

来源:互联网 发布:程序员初级职称 编辑:程序博客网 时间:2024/05/18 00:21

冒泡排序


冒泡排序是排序算法中比较基础的一种排序,主要思想是:每次比较相邻两个数的大小,例如a[0]和a[1]比较,若a[0]>a[1],则交换,依次向后比较,一轮下来,最大的交换到最后面,之后每轮比较出大的放到后面。


代码实现如下:
#include<stdio.h>#include<stdlib.h>//冒泡排序void BubbleSort(int a[],int nlength){int i,j,mark=0;if(a == NULL||nlength <= 0) return ;for(i=0;i<nlength;i++){mark = 0; for(j=0;j<nlength-i-1;j++)  //优化1{if(a[j]>a[j+1]) //相邻元素进行比较{//不用中间变量实现两个类型相同的变量的交换a[j]^=a[j+1];a[j+1]^=a[j];a[j]^=a[j+1]; mark=j+1;  //标记最大交换位置}}if(mark==0) break;i=nlength-1-mark;   //减少整体执行次数---优化2}}int main(){int i;int a[]={1,3,2,5,8,6,7,9};int n=sizeof(a)/sizeof(a[0]);BubbleSort(a,n);for(i=0;i<n;i++) printf("%d ",a[i]);system("pause");return 0;}


原创粉丝点击