Sorting algorithms/Insertion sort: Difference between revisions

Content added Content deleted
m (some comments)
m (size_t & comment)
Line 1,074: Line 1,074:
<lang c>#include <stdio.h>
<lang c>#include <stdio.h>


void insertion_sort(int *a, int n) {
void insertion_sort(int*, size_t);

void insertion_sort(int *a, size_t n) {
for(size_t i = 1; i < n; ++i) {
for(size_t i = 1; i < n; ++i) {
int tmp = a[i];
int key = a[i];
size_t j = i;
size_t j = i;
while(j > 0 && tmp < a[j - 1]) {
while( (j > 0) && (key < a[j - 1]) ) {
a[j] = a[j - 1];
a[j] = a[j - 1];
--j;
--j;
}
}
a[j] = tmp;
a[j] = key;
}
}
}
}


int main () {
int main (int argc, char** argv) {
int a[] = {4, 65, 2, -31, 0, 99, 2, 83, 782, 1};
int a[] = {4, 65, 2, -31, 0, 99, 2, 83, 782, 1};

int n = sizeof a / sizeof a[0];
const size_t n = sizeof(a) / sizeof(a[0]) ; // array extent
int i;

for (i = 0; i < n; i++)
printf("%d%s", a[i], i == n - 1 ? "\n" : " ");
for (size_t i = 0; i < n; i++)
printf("%d%s", a[i], (i == (n - 1))? "\n" : " ");

insertion_sort(a, n);
insertion_sort(a, n);

for (i = 0; i < n; i++)
printf("%d%s", a[i], i == n - 1 ? "\n" : " ");
for (size_t i = 0; i < n; i++)
printf("%d%s", a[i], (i == (n - 1))? "\n" : " ");

return 0;
return 0;
}
}