冒泡算法--C语言实现

定义:冒泡算法是通过一组数字两两进行对比,将最大的数字不断提升到数据顶端,使之进行排序的算法

思想:冒泡排序的基本思想就是不断比较相邻的两个数,让较大的元素不断地往后移。经过一轮比较,就选出最大的数;经过第2轮比较,就选出次大的数,以此类推。

#include<stdio.h>

#include<stdlib.h>

 

#define N 8

 

void bubble_sort(int a[],int n);

 

 

//一般实现

void bubble_sort(int a[],int n)//n为数组a的元素个数

{

//一定进行N-1轮比较

for(int i=0; i<n-1; i++)

{

//每一轮比较前n-1-i个,即已排序好的最后i个不用比较

for(int j=0; j<n-1-i; j++)

{

if(a[j] > a[j+1])

{

int temp = a[j];

a[j] = a[j+1];

a[j+1]=temp;

}

}

}

}

 

//优化实现

void bubble_sort_better(int a[],int n)//n为数组a的元素个数

{

//最多进行N-1轮比较

for(int i=0; i<n-1; i++)

{

bool isSorted = true;

//每一轮比较前n-1-i个,即已排序好的最后i个不用比较

for(int j=0; j<n-1-i; j++)

{

if(a[j] > a[j+1])

{

isSorted = false;

int temp = a[j];

a[j] = a[j+1];

a[j+1]=temp;

}

}

if(isSorted) break; //如果没有发生交换,说明数组已经排序好了

}

}

 

 

int  main()

{

int num[N] = {89, 38, 11, 78, 96, 44, 19, 25};

 

bubble_sort(num, N); //或者使用bubble_sort_better(num, N);

 

for(int i=0; i<N; i++)

printf("%d  ", num[i]);

 

printf("\n");

 

 

system("pause");

return 0;

}

猜你喜欢

转载自www.cnblogs.com/lyh12648--qq/p/10501127.html