#include<stdio.h>
#include<time.h>
#include<sys/time.h>
#include<stdlib.h>
int i, j;
void generate_random(int arr[], int n) {
for (i = 0; i < n; i++)
arr
[i
] = rand() % 100000;}
void selectionSort(int arr[], int n) {
for (i = 0; i < n - 1; i++) {
int min_idx = i;
for (j = i + 1; j < n; j++)
if (arr[j] < arr[min_idx])
min_idx = j;
int temp = arr[i];
arr[i] = arr[min_idx];
arr[min_idx] = temp;
}
}
int main() {
int arr[100000], i;
struct timeval t;
double start, end;
for (i = 10000; i <= 80000; i = i * 2) {
generate_random(arr, i);
gettimeofday(&t, NULL);
start = t.tv_sec + (t.tv_usec / 1000000.0);
selectionSort(arr, i);
gettimeofday(&t, NULL);
end = t.tv_sec + (t.tv_usec / 1000000.0);
printf("Input size: %d\tTime taken: %lf seconds\n", i
, end
- start
); }
// GNUplot-related commands are commented out for online execution:
// pipe = popen("gnuplot --persist", "w");
// fprintf(pipe, "set title 'Run Time analysis of Selection Sort';");
// fprintf(pipe, "set ylabel 'Time [m sec]'; ");
// fprintf(pipe, "set xlabel 'Input';");
// fprintf(pipe, "plot 'Sorting.txt' using 1:2 title 'Selection Sort' with linespoints \n");
return 0;
}
I2luY2x1ZGU8c3RkaW8uaD4KI2luY2x1ZGU8dGltZS5oPgojaW5jbHVkZTxzeXMvdGltZS5oPgojaW5jbHVkZTxzdGRsaWIuaD4KCmludCBpLCBqOwoKdm9pZCBnZW5lcmF0ZV9yYW5kb20oaW50IGFycltdLCBpbnQgbikgewogICAgc3JhbmQodGltZSgwKSk7CiAgICBmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKSAKICAgICAgICBhcnJbaV0gPSByYW5kKCkgJSAxMDAwMDA7Cn0KCnZvaWQgc2VsZWN0aW9uU29ydChpbnQgYXJyW10sIGludCBuKSB7CiAgICBmb3IgKGkgPSAwOyBpIDwgbiAtIDE7IGkrKykgewogICAgICAgIGludCBtaW5faWR4ID0gaTsKICAgICAgICBmb3IgKGogPSBpICsgMTsgaiA8IG47IGorKykgCiAgICAgICAgICAgIGlmIChhcnJbal0gPCBhcnJbbWluX2lkeF0pIAogICAgICAgICAgICAgICAgbWluX2lkeCA9IGo7CiAgICAgICAgaW50IHRlbXAgPSBhcnJbaV07CiAgICAgICAgYXJyW2ldID0gYXJyW21pbl9pZHhdOwogICAgICAgIGFyclttaW5faWR4XSA9IHRlbXA7CiAgICB9Cn0KCmludCBtYWluKCkgewogICAgaW50IGFyclsxMDAwMDBdLCBpOwogICAgc3RydWN0IHRpbWV2YWwgdDsKICAgIGRvdWJsZSBzdGFydCwgZW5kOwoKICAgIGZvciAoaSA9IDEwMDAwOyBpIDw9IDgwMDAwOyBpID0gaSAqIDIpIHsKICAgICAgICBnZW5lcmF0ZV9yYW5kb20oYXJyLCBpKTsKICAgICAgICBnZXR0aW1lb2ZkYXkoJnQsIE5VTEwpOwogICAgICAgIHN0YXJ0ID0gdC50dl9zZWMgKyAodC50dl91c2VjIC8gMTAwMDAwMC4wKTsKICAgICAgICBzZWxlY3Rpb25Tb3J0KGFyciwgaSk7CiAgICAgICAgZ2V0dGltZW9mZGF5KCZ0LCBOVUxMKTsKICAgICAgICBlbmQgPSB0LnR2X3NlYyArICh0LnR2X3VzZWMgLyAxMDAwMDAwLjApOwogICAgICAgIHByaW50ZigiSW5wdXQgc2l6ZTogJWRcdFRpbWUgdGFrZW46ICVsZiBzZWNvbmRzXG4iLCBpLCBlbmQgLSBzdGFydCk7CiAgICB9CgogICAgLy8gR05VcGxvdC1yZWxhdGVkIGNvbW1hbmRzIGFyZSBjb21tZW50ZWQgb3V0IGZvciBvbmxpbmUgZXhlY3V0aW9uOgogICAgLy8gcGlwZSA9IHBvcGVuKCJnbnVwbG90IC0tcGVyc2lzdCIsICJ3Iik7CiAgICAvLyBmcHJpbnRmKHBpcGUsICJzZXQgdGl0bGUgJ1J1biBUaW1lIGFuYWx5c2lzIG9mIFNlbGVjdGlvbiBTb3J0JzsiKTsKICAgIC8vIGZwcmludGYocGlwZSwgInNldCB5bGFiZWwgJ1RpbWUgW20gc2VjXSc7ICIpOwogICAgLy8gZnByaW50ZihwaXBlLCAic2V0IHhsYWJlbCAnSW5wdXQnOyIpOwogICAgLy8gZnByaW50ZihwaXBlLCAicGxvdCAnU29ydGluZy50eHQnIHVzaW5nIDE6MiB0aXRsZSAnU2VsZWN0aW9uIFNvcnQnIHdpdGggbGluZXNwb2ludHMgXG4iKTsKCiAgICByZXR1cm4gMDsKfQ==