冒泡排序算法
冒泡排序算法:它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。
走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是
因为越小的元素会经由交换慢慢“浮”到数列的顶端。
冒泡排序算法的运作如下:
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