Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #define ODD 'o'
- #define EVEN 'e'
- #define REMAINDER_EVEN 0
- #define REMAINDER_ODD 1
- void sort_integers(int *integer_list, int num_integers, int sort_type_remainder)
- {
- int i, j, aux, offset = 1;
- for(i = 0; i < num_integers - 1; i++)
- {
- offset = 1;
- for(j = 0; j + offset < num_integers - i; j++)
- {
- if(abs(integer_list[j] % 2) != sort_type_remainder) //first element to be compared is of wrong type, skip
- {
- j++;
- }
- else
- {
- //first element is of good type, but second element is not, increase offset and reloop first element
- if(abs(integer_list[j + offset] % 2) != sort_type_remainder)
- {
- j--;
- offset++;
- }
- else //both elements are of good type, bubble sort them
- {
- if(integer_list[j] > integer_list[j + offset])
- {
- aux = integer_list[j + offset];
- integer_list[j + offset] = integer_list[j];
- integer_list[j] = aux;
- }
- offset = 1;
- }
- }
- }
- }
- }
- int main()
- {
- char sort_type[4];
- int num_integers;
- scanf("%s", sort_type); //arrays resolve to &sort_type[0]
- scanf("%d", &num_integers);
- int *integer_list = malloc(num_integers * sizeof(int));
- int i;
- for(i = 0; i < num_integers; i++)
- {
- scanf("%d", &integer_list[i]);
- }
- if(sort_type[0] == EVEN)
- sort_integers(integer_list, num_integers, REMAINDER_EVEN);
- else
- sort_integers(integer_list, num_integers, REMAINDER_ODD);
- printf("\n");
- for(i = 0; i < num_integers; i++)
- {
- printf("%d ", integer_list[i]);
- }
- return 0;
- }
Add Comment
Please, Sign In to add comment