今天说说冒泡排序算法。
冒泡排序的思想:就像气泡一样让最小的(或者最大的)浮到最上面,一个个接着浮上来,整个排序完成。
请看图
这样一趟排序已完成,此时最小值就会浮到最上面(即水面上)</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("\n");
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.youkuaiyun.com/detail/mingyueruya/8188677