Advertisement
Guest User

Untitled

a guest
Nov 23rd, 2014
129
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.48 KB | None | 0 0
  1. /*
  2. * QuickSort.c
  3. *
  4. * Created on: Nov 20, 2014
  5. * Author: steven
  6. */
  7.  
  8. #include <float.h>
  9. #include <limits.h>
  10. #include <math.h>
  11. #include <stdbool.h>
  12. #include <stdio.h>
  13. #include <stdlib.h>
  14. #include <string.h>
  15.  
  16. void swap(int *int1, int *int2){
  17. int temp = *int1;
  18. *int1 = *int2;
  19. *int2 = temp;
  20. }
  21.  
  22. void quickSort(int* array, int l, int r){
  23. int s;
  24. if (l < r){
  25. s = partition(array, l, r);
  26. quickSort(array, l, s - 1);
  27. quickSort(array, s + 1, r);
  28. }
  29. }
  30.  
  31. int partition(int* array, int l, int r){
  32. int p = array[l];
  33. int i = l;
  34. int j = r + 1;
  35. while (i < j){
  36. do {
  37. ++i;
  38. } while (array[i] <= p && i <= r);
  39. do {
  40. --j;
  41. } while (array[j] > p);
  42. swap(&array[i], &array[j]);
  43. }
  44. swap(&array[i], &array[j]);
  45. swap(&array[l], &array[j]);
  46. return j;
  47. }
  48.  
  49. int main() {
  50. int intSize = 0;
  51. int* intData = NULL;
  52. //int intMin = 0;
  53.  
  54. FILE* fileHandle = fopen("Data1.txt", "r");
  55.  
  56. //Scans document for first int, assign to intSize
  57. fscanf(fileHandle, "%d", &intSize);
  58.  
  59. intData = (int*) (malloc(sizeof(int) * intSize));
  60.  
  61. // Add to array
  62. for (int intFor1 = 0; intFor1 < intSize; intFor1 += 1) {
  63. fscanf(fileHandle, "%d", &intData[intFor1]);
  64. }
  65.  
  66. // Sort!
  67. quickSort(intData, 0, intSize - 1);
  68.  
  69. // Print!
  70. for (int i = 0; i < intSize; i += 1){
  71. printf("%d ", intData[i]);
  72. }
  73. printf("\n");
  74.  
  75. fclose(fileHandle);
  76. printf("\n");
  77. free(intData);
  78.  
  79. return 0;
  80.  
  81. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement