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 |
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 |
int key = a[i]; |
||
size_t j = i; |
size_t j = i; |
||
while(j > 0 && |
while( (j > 0) && (key < a[j - 1]) ) { |
||
a[j] = a[j - 1]; |
a[j] = a[j - 1]; |
||
--j; |
--j; |
||
} |
} |
||
a[j] = |
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}; |
||
const size_t n = sizeof(a) / sizeof(a[0]) ; // array extent |
|||
int i; |
|||
for (i = 0; i < n; i++) |
|||
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++) |
|||
for (size_t i = 0; i < n; i++) |
|||
printf("%d%s", a[i], (i == (n - 1))? "\n" : " "); |
|||
return 0; |
return 0; |
||
} |
} |