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