fork download
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. void printA(int a[], int n) {
  5. for (int i = 0; i < n; i++) {
  6. printf("%d ", a[i]);
  7. }
  8. printf("\n");
  9. }
  10.  
  11. void swap(int* a, int* b) {
  12. int tmp = *a;
  13. *a = *b;
  14. *b = tmp;
  15. }
  16.  
  17. void InsertionSort(int a[], int n) {
  18. for (int i = 1; i < n; i++) {
  19. int key = a[i];
  20. int j = i - 1;
  21. // 大きい要素を右にずらす
  22. while (j >= 0 && a[j] > key) {
  23. a[j + 1] = a[j];
  24. j--;
  25. }
  26. a[j + 1] = key;
  27. }
  28. }
  29.  
  30. int main(void) {
  31. int n;
  32. scanf("%d", &n);
  33.  
  34. int *v = (int*)malloc(sizeof(int) * n);
  35. if (v == NULL) {
  36. printf("ERROR\n");
  37. return -1;
  38. }
  39.  
  40. for (int i = 0; i < n; i++) {
  41. scanf("%d", &v[i]);
  42. }
  43.  
  44. InsertionSort(v, n);
  45. printA(v, n);
  46.  
  47. free(v);
  48. return 0;
  49. }
  50.  
Success #stdin #stdout 0.01s 5328KB
stdin
8
21 55 5 13 8 2 34 3
stdout
2 3 5 8 13 21 34 55