fork download
  1. #include <stdio.h>
  2.  
  3. void Look_Data(int a[], int n);
  4.  
  5. #define NUM_SU 10 /* ソートするデータの数 */
  6. int a[] = {20, 6, 55, 74, 3, 45, 13, 87, 46, 30}; /* このデータをソート */
  7.  
  8. void bubble_sort_step(int a[], int n, int i)
  9. {
  10. int j, t;
  11.  
  12. for (j = n - 1; j > i; j--)
  13. { /* 後ろから先頭に向かってスキャン */
  14. if (a[j - 1] > a[j])
  15. { /* もし隣り合う要素の大小関係が反対だったら */
  16. t = a[j]; /* 交換する */
  17. a[j] = a[j - 1];
  18. a[j - 1] = t;
  19. }
  20. }
  21. Look_Data(a, NUM_SU);
  22. }
  23.  
  24. /* データを表示する関数 */
  25. void Look_Data(int a[], int n)
  26. {
  27. int i;
  28.  
  29. for (i = 0; i < n; i++)
  30. printf("%3d", a[i]);
  31. }
  32.  
  33. int main(void)
  34. {
  35. int i;
  36. /* 整列前のデータを表示 */
  37. printf("整列前: ");
  38. Look_Data(a, NUM_SU);
  39. printf("\n\n");
  40.  
  41. for (i = 1; i < NUM_SU; i++)
  42. {
  43. printf("%d番目のスキャン後:", i);
  44. bubble_sort_step(a, NUM_SU, i - 1);
  45. printf("\n");
  46. }
  47. }
  48.  
Success #stdin #stdout 0s 4568KB
stdin
Standard input is empty
stdout
整列前:  20  6 55 74  3 45 13 87 46 30

1番目のスキャン後:  3 20  6 55 74 13 45 30 87 46
2番目のスキャン後:  3  6 20 13 55 74 30 45 46 87
3番目のスキャン後:  3  6 13 20 30 55 74 45 46 87
4番目のスキャン後:  3  6 13 20 30 45 55 74 46 87
5番目のスキャン後:  3  6 13 20 30 45 46 55 74 87
6番目のスキャン後:  3  6 13 20 30 45 46 55 74 87
7番目のスキャン後:  3  6 13 20 30 45 46 55 74 87
8番目のスキャン後:  3  6 13 20 30 45 46 55 74 87
9番目のスキャン後:  3  6 13 20 30 45 46 55 74 87