本文作者:qiaoqingyi

c经典编程220例(c语言经典编程)

qiaoqingyi 08-03 81

  

  冒泡排序 源码

  

  //冒泡排序的优化

  //优化:让已有的算法更加快速、省时,省空间

  #includestdio.h

  #includestdlib.h

  #includetime.h

  int arr[10000];

  //c / c++

  void betterbubble(int * arr,int n)

  {

  int i,j;

  int count = 0;

  for(i = 0;i n - 1;i++)

  {

  int flag = 1;

  for(j = 0;j n -1 -i;j++)

  {

  count++;

  if(arr[j] arr[j + 1]) //后面小于前面的 交换

  {

  flag = 0;

  int temp = arr[j];

  arr[j] = arr[j + 1];

  arr[j + 1] = temp;

  }

  }

c经典编程220例(c语言经典编程)

  if(flag)

  break;

  }

  printf("better-bubble = %d\n",count);

  }

  void bubble(int * arr,int n)

  {

  int i,j;

  int count = 0;

  for(i = 0;i n - 1;i++)

  {

  for(j = 0;j n -1 -i;j++)

  {

  count++;

  if(arr[j] arr[j + 1]) //后面小于前面的 交换

  {

  int temp = arr[j];

  arr[j] = arr[j + 1];

  arr[j + 1] = temp;

  }

  }

  }

  printf("bubble count = %d\n",count);

  }

  int fun(int * arr,int n) //检测函数

  {

  int i;

  for(i = 0;i n - 1;i++)

  {

  if(arr[i] arr[i + 1])

  {

  printf("error\n");

  return 1;

  }

  }

  return 0;

  }

  int main()

  {

  srand(time(NULL));

  int i;

  for(i = 0;i 10000;i++)

  arr[i] = i;

  printf("%d\n",fun(arr,10000));

  bubble(arr,10000);

  printf("%d\n",fun(arr,10000));

  return 0;

  }

  关注微信公众号:编程语言

  有更多(C/C++语言,linux,JAVA语言)高手帮助你解决难题,一起互动,提高大家的编程水平

阅读
分享