冒泡排序(C语言实现) 分类: 数据结构 2014-11-23 08:21 126人阅读 评论(0) 收藏

今天说说冒泡排序算法。

冒泡排序的思想:就像气泡一样让最小的(或者最大的)浮到最上面,一个个接着浮上来,整个排序完成。

请看图

这样一趟排序已完成,此时最小值就会浮到最上面(即水面上)</p><p>这是整个冒泡排序的思想,如果这玩意理解了,那么代码就不难了,至少能看懂了</p><p>声明,代码都是亲自敲出来的,GCC版本gcc (Ubuntu 4.4.3-4ubuntu5) 4.4.3Copyright (C) 2009 Free Software Foundation, Inc.This is free software; see the source for copying conditions.  There is NOwarranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

 1 #include <stdio.h>
  2 
  3 void Print(int* arr,int len)
  4 {
  5    int i;
  6    for(i=0;i<len;i++)
  7    {
  8       printf("%d ",arr[i]);
  9    }
 10    printf("
");
 11 }
 12 
 13 void Swap(int* a,int* b)
 14 {
 15    *a=*a+*b;
 16    *b=*a-*b;
 17    *a=*a-*b;
 18 }
main.c
  1 #include "sort.h"
  2 
  3 void Bubble(int* arr,int len);
  4 int main(void)
  5 {
  6    int arr[]={-1,1,-2,2,4};
  7    Print(arr,5);
  8    Bubble(arr,5);
  9    Print(arr,5);
 10    return 0;
 11 }
 12 
 13 void Bubble(int* arr,int len)
 14 {
 15    int i,j;
 16    for(i=0;i<len;i++)
 17    {
 18       for(j=len-1;j>i;j--) //从最深处开始,为什么j>i?这是因为i表示位置,i=0表示正在排序第一个位置,如果这个位置拍好了,下次就是排序i=1位置
 19       {
 20          if(arr[j]>arr[j-1])
 21             Swap(&arr[j],&arr[j-1]); //交换值
 22       }
 23    }
 24 }





完整代码实现地址下载:http://download.csdn.net/detail/mingyueruya/8188677



版权声明:本文为博主原创文章,未经博主允许不得转载。

原文地址:https://www.cnblogs.com/L-Lune/p/4671294.html