main.cpp 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. //
  2. // Created by tangs on 2018/11/16.
  3. //
  4. #include <iostream>
  5. using namespace std;
  6. // 书上的实现方式,其中只能排序1 ~ n-1 个元素, 第0个元素被当做中间变量。
  7. void InsertSort(int A[], int n) {
  8. int i, j;
  9. for (i = 2; i < n; i++) {
  10. if (A[i] < A[i - 1]) {
  11. A[0] = A[i];
  12. for (j = i - 1; A[0] < A[j]; --j) {
  13. A[j + 1] = A[j];
  14. }
  15. A[j + 1] = A[0];
  16. }
  17. }
  18. }
  19. // 自己实现,不占用数组空间来当中间变量。
  20. void InsertSortBySelf(int A[], int n) {
  21. int i, j, temp;
  22. for (i = 1; i < n; i++) {
  23. if (A[i] < A[i - 1]) {
  24. temp = A[i];
  25. for (j = i - 1; A[j] > temp && j >= 0; j--) {
  26. A[j + 1] = A[j];
  27. }
  28. }
  29. A[j + 1] = temp;
  30. }
  31. }
  32. int main() {
  33. int A1[] = {6, 1, 5, 2, 1, 9, 10, 24, 7, 0};
  34. InsertSort(A1, 10);
  35. // print:
  36. // 0 0 1 1 2 5 7 9 10 24
  37. for (int i = 0; i < 10; i++) {
  38. cout << A1[i] << " ";
  39. }
  40. cout << endl;
  41. // --------------------------------------------------------------------------
  42. int A2[] = {6, 1, 5, 2, 1, 9, 10, 24, 7, 0};
  43. InsertSortBySelf(A2, 10);
  44. // print:
  45. // 0 1 1 2 5 6 7 9 10 24
  46. for (int i = 0; i < 10; i++) {
  47. cout << A2[i] << " ";
  48. }
  49. cout << endl;
  50. return 0;
  51. }