Advertisement
Guest User

Untitled

a guest
Sep 4th, 2015
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.26 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. void gen_ary(int ary[], int size);
  5. void shuffle(int ary[], int size);
  6. void sort(int ary[], int size);
  7.  
  8. int main() {
  9. int i, size;
  10. scanf("%d", &size);
  11.  
  12. int ary[size];
  13. gen_ary(ary, size);
  14. shuffle(ary, size);
  15. sort(ary, size);
  16.  
  17. return 0;
  18. }
  19.  
  20. void gen_ary(int ary[], int size) {
  21. int i;
  22. for (i = 1; i <= size; i++) {
  23. ary[i] = i;
  24. }
  25. }
  26.  
  27. void shuffle(int ary[], int size) {
  28. int i;
  29. for (i = 1; i <= size; i++) {
  30. int j = rand() % size;
  31. int t = ary[i];
  32. ary[i] = ary[j];
  33. ary[j] = t;
  34. }
  35. }
  36.  
  37. void sort(int ary[], int size) {
  38. int i, j = 0, k = 0, flg = 0;
  39. while (!flg) {
  40. int rep = 0;
  41. j++;
  42. printf("Phase %d: [", j);
  43. for (i = 1; i <= size; i++) {
  44. if (ary[i] > ary[i + 1]) {
  45. int l = ary[i];
  46. ary[i] = ary[i + 1];
  47. ary[i + 1] = l;
  48. rep = 1;
  49. k++;
  50. }
  51. if (i != 1) {
  52. printf(", %d", ary[i]);
  53. } else {
  54. printf("%d", ary[i]);
  55. }
  56. }
  57. printf("]\n");
  58.  
  59. if (!rep) {
  60. flg = 1;
  61. }
  62. }
  63. printf("\n総比較回数: %d\n総置換回数: %d\n", j, k);
  64. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement