请选择 进入手机版 | 继续访问电脑版
查看: 480|回复: 0

[云计算] 需要规则的冒泡排序

688

主题

688

帖子

2083

积分

猿er

Rank: 1

积分
2083
发表于 2016-8-14 17:58:24
从程序的可重用性,运行速度,优化方面设计.
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. int rule1(int x,int y){return x - y;}//从小到大排
  4. int rule2(int x,int y){return y - x;}//从大到小排
  5. void sort(int* arr,int size,int (*rule)(int,int)){
  6. int i,j;
  7. bool fage;
  8. for(i = 0; i < size-1; i++){
  9. fage = true;
  10. for(j = 0; j < size-i-1; j++){
  11. if(rule(arr[j],arr[j+1]) > 0){
  12. arr[j] = arr[j]^arr[j+1];
  13. arr[j+1] = arr[j]^arr[j+1];
  14. arr[j] = arr[j]^arr[j+1];
  15. fage = false;
  16. }
  17. }
  18. if(fage)break;
  19. }
  20. }
  21. void print(int* arr,int size){
  22. int i;
  23. for(i = 0; i < size; i++){
  24. printf(" %d ",arr[i]);
  25. }
  26. printf("\n");
  27. }
  28. int main(int argc, char* argv[])
  29. {
  30. int a[] = {5,2,8,7,1,4,9,3,6,0};
  31. print(a,10);
  32. sort(a,10,rule1);
  33. print(a,10);
  34. sort(a,10,rule2);
  35. print(a,10);
  36. return 0;
  37. }
复制代码


回复

使用道具 举报