Web Page - http://www.cs.tau.ac.il/~efif/courses/Software1_Spring_04
void swap(int i, int j) { int temp; temp = buffer[i]; buffer[i] = buffer[j]; buffer[j] = temp; } |
#include <stdio.h> #include <stdlib.h> #define BUFFER_SIZE 100 int buffer[BUFFER_SIZE]; int main() { int i, j, current; /* reading input */ for (i = 0; i < sizeof(buffer)/sizeof(int) && (scanf("%d", ¤t) == 1); ++i) buffer[i] = current; if (i == 0) return; insertion_sort(i); /* quick_sort(0, i-1); */ /* printing the sorted array */ for (j = 0; j < i; ++j) printf("%d ", buffer[j]); printf("\n"); return 0; } |
void insertion_sort(int size) { int j, k; for (j = 1; j < size; ++j) for (k = j; k > 0 && (buffer[k] < buffer[k-1]); --k) swap(k, k-1); } |
void quick_sort(int left, int right) { int i, last; if (left >= right) return; swap(left, (left + right) / 2); last = left; for (i = left + 1; i <= right; ++i) if (buffer[i] < buffer[left]) swap(++last, i); swap(left, last); quick_sort(left, last - 1); quick_sort(last + 1, right); } |
while (ptr != NULL) { free(ptr); ptr = ptr->next; } |