冒泡排序


冒泡排序算法的运作如下:时间复杂度为O(n*n)

  1. 比较相邻的元素。如果第一个比第二个大,就交换他们两个。
  2. 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。
  3. 针对所有的元素重复以上的步骤,除了最后一个。
  4. 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
#include <stdio.h>

/* data is an int array, count is the number of the array */
void BubbleSort(int *data,int count){
 int temp;
 bool flag;
 for (int i=0;i<count-1;i++ ){
 flag = false;
 for (int j=0;j<count-1-i ; j++){
 if (data[j]>data[j+1]){/* 如果前一个数字比后一个大,则交换两个位置 */
 temp = data[j];
 data[j] = data[j+1];
 data[j+1] = temp;
 flag=true;
 }
 }
 if(!flag) return;/* 如果没有发生交换则说明排好序了  */
 }
}

/* output function */
void array_print(int *data,int n){
 for (int i=0;i<n ;i++ ){
 printf("%3d,",data[i]);
 }
}

int main()
{
 const int Num = 10;
 int data[Num]={7,5,6,3,9,2,8,10,25,5};

 printf("\nBefore the sort the array is:\n");
 array_print(data,Num);

 BubbleSort(data,Num);
 printf("\nAfter the sort the array is:\n");
 array_print(data,Num);

 return 0;
}

posted @ 2009-12-09 04:11  莫忆往西  阅读(132)  评论(0编辑  收藏  举报