冒泡排序 源码

  

  //冒泡排序的优化

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

  #include<stdio.h>

  #include<stdlib.h>

  #include<time.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;

  }

  }

  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语言)高手帮助你解决难题,一起互动,提高大家的编程水平