1. 算法的基本思想
冒泡排序是交换排序的一种。我们可以将数组中的元素想像成一个个气泡。数值大的元素气泡重量大。我们可以自上而下的扫描数组,遇到不符合规则的,
重气泡就往下沉。直到所有的气泡都是轻气泡在上,重气泡在下。这就完成了排序的任务。
2. 算法流程
- 一开始数组Array[0...n-1]是无序的,我们要对n个元素进行n-1次扫描。
- 第一次扫描,自上而下的扫描元素,遇到违反规则的两个气泡,就将重气泡下沉(也就是将这两个交换顺序)然后依次比较下去。最后得到的结果就是
最重的气泡被送到了最下面。
- 第二次扫描,扫描Array[0...n-2],然后次重的气泡就到了Array[n-2]的位置上。
- 重复上面的扫描,每次的扫描次数都比上一次要少1次。直到n-1次扫描结束,就是Array[0]和Array[1]进行比较结束。
3. 代码实现
1 #include <stdio.h> 2 #include <stdlib.h> 3 void BubbleSort(int *Array,int n){ 4 int a,i,j; //交换两个值的辅助变量 5 for(i=n-1;i>0;i--) //扫描n-1次 6 for(j=0;j<i;j++){ //从0到n-2,将小的元素交换到前面。 7 if(*(Array+j)>*(Array+j+1)){ 8 a=*(Array+j); 9 *(Array+j)=*(Array+j+1); 10 *(Array+j+1)=a; 11 } 12 } 13 } 14 int main() 15 { 16 int *p,n,i; 17 printf("请输入数组的个数:"); 18 scanf("%d",&n); 19 p=(int*)malloc(sizeof(int)*n); 20 printf("输入元素:"); 21 for(i=0;i<n;i++) 22 scanf("%d",p+i); 23 BubbleSort(p,n); 24 printf("排序后的数组:"); 25 for(i=0;i<n;i++){ 26 printf("%d ",*(p+i)); 27 } 28 return 0; 29 }
来源:https://www.cnblogs.com/tangdingkang/p/10753922.html