sort.c 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #include <stdbool.h>
  5. #include <limits.h>
  6. #include <assert.h>
  7. #define foreach(item, array) \
  8. for(int keep = 1, \
  9. count = 0,\
  10. size = sizeof (array) / sizeof *(array); \
  11. keep && count != size; \
  12. keep = !keep, count++) \
  13. for(item = (array) + count; keep; keep = !keep)
  14. //prototypes
  15. void readFile(FILE *in, int *arr);
  16. int *sortArrayBubble(int *arr);
  17. int *sortArrayInsert(int *arr);
  18. void printArray(int *arr);
  19. int getListSize(int *arr);
  20. int arr[100000];
  21. int main(int argc, char* argv[])
  22. {
  23. FILE *in = stdin;
  24. char* in;
  25. if(argc > 2)
  26. {
  27. fprintf(stderr, "Usage: %s [<file>]\n", argv[0]);
  28. exit(EXIT_FAILURE);
  29. }
  30. if(argc == 2)
  31. {
  32. in = fopen(argv[1], "r");
  33. if(!in)
  34. {
  35. perror(argv[0]);
  36. exit(EXIT_FAILURE);
  37. }
  38. }
  39. int bubble[getListSize()];
  40. readFile(in,*bubble);
  41. sortArrayBubble(*bubble);
  42. printArray();
  43. return 0;
  44. }
  45. void readFile(FILE *in, int* arr)
  46. {
  47. int i = 0;
  48. while(!feof(in))
  49. {
  50. fscanf(in, "%d",&arr[i]) ;
  51. i++;
  52. }
  53. }
  54. void sortArrayBubble()
  55. {
  56. bool swapped = true;
  57. int temp;
  58. int i = 0;
  59. int arrsize = sizeof(arr)/sizeof(int);
  60. while(swapped)
  61. {
  62. swapped = false;
  63. for(i; i < arrsize-1; i++)
  64. {
  65. if(arr[i]>arr[i+1])
  66. {
  67. temp = arr[i];
  68. arr[i] = arr[i+1];
  69. arr[i+1] = temp;
  70. swapped = true;
  71. }
  72. }
  73. i = 0;
  74. }
  75. }
  76. void sortArrayInsert()
  77. {
  78. int out[100000];
  79. int i = 0;
  80. int o = 0;
  81. for(i; i < 100000; i++)
  82. {
  83. }
  84. }
  85. void printArray()
  86. {
  87. foreach(int *v, arr) {
  88. printf("%d\n", *v);
  89. }
  90. }
  91. int getListSize(FILE *in)
  92. {
  93. int i = 0;
  94. while(!feof(in))
  95. {
  96. i++;
  97. }
  98. return i;
  99. }