优化的冒泡排序C代码

2014-11-23 17:38:52 · 作者: · 浏览: 24

  #include


  void bsort(char *arr, int len)


  {


  int i, j, k, t, cnt = 0;;


  for(i = len - 1; i > 0; i = k) {


  for (j = 0, k = 0; j < i; j++) {


  if (*(arr + j) > *(arr + j + 1)) {


  t = *(arr + j);


  *(arr + j) = *(arr + j + 1);


  *(arr + j + 1) = t;


  k = j;


  }


  }


  cnt++;


  }


  printf("cycle %d\n", cnt);


  }


  int main(int argc, char *argv[])


  {


  int i = 0;


  char arr[10] = {3, 2, 5, 4, 4, 5, 6, 7, 8, 9};


  while (i < 10) {


  printf("%d ", arr[i++]);


  }


  i = 0;


  putchar('\n');


  bsort(arr, 10);


  while (i < 10) {


  printf("%d ", arr[i++]);


  }


  putchar('\n');


  }


  编辑特别推荐: