今天说说冒泡排序算法。
冒泡排序的思想:就像气泡一样让最小的(或者最大的)浮到最上面,一个个接着浮上来,整个排序完成。
请看图
这样一趟排序已完成,此时最小值就会浮到最上面(即水面上)</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
版权声明:本文为博主原创文章,未经博主允许不得转载。