冒泡排序算法

冒泡排序算法:它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。

走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是

因为越小的元素会经由交换慢慢“浮”到数列的顶端。

 

冒泡排序算法的运作如下:

1.比较相邻的元素。如果第一个比第二个大,就交换他们两个。

2.对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。

3.针对所有的元素重复以上的步骤,除了最后一个。

4.持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。

 

C语言代码如下:

BubbleSort.c文件如下:

#include "BubbleSort.h"

void BubbleSort(double fArray[],int nCount)
{
    int i, length;
    double temp;
    if(nCount==1)
        return;
    length = nCount;
    while(length>1)
    {
        for(i=0;i<length-1;i++)
        {
            if(fArray[i]>fArray[i+1])
            {
                temp = fArray[i];
                fArray[i] = fArray[i+1];
                fArray[i+1] = temp;
            }
        }
        length--;
    }
}

 

BubbleSort.h文件如下:

#ifndef _BUBBLESORT_H_
#define _BUBBLESORT_H_

void BubbleSort(double fArray[],int nCount);

#endif // _BUBBLESORT_H_

 

Test.c文件如下:

#include "BubbleSort.h"
#include <stdio.h>

int main()
{
    double fArray[] = {1.1, 3.4, 2.6, 9.3, 4.2, 7.8, 8.6, 2.5, 7.3, 4.9};
    int i,length;
    length = sizeof(fArray)/sizeof(*fArray);

    BubbleSort(fArray, length);

    for(i=0;i<length;i++)
        printf("%f ",fArray[i]);
    return 0;
}

 

Python代码BubbleSort.py如下:

#!/usr/bin/python

numbers=[1,2,3,4,8,9,5,7]
print numbers

#Bubble
length = len(numbers)
while length > 1:
    x = 0
    while x < length-1:
        if numbers[x] > numbers[x+1]:
            v = numbers[x]
            numbers[x] = numbers[x+1]
            numbers[x+1] = v
        x+=1
    length-=1
print numbers

 

posted @ 2013-05-19 14:03  独墅一枝花  阅读(218)  评论(0编辑  收藏  举报