查看: 1413|回復: 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. }
復制代碼


回復

使用道具 舉報