[关闭]
@breakerthb 2017-07-14T02:07:16.000000Z 字数 754 阅读 973

简单插入排序

DataStruct


  1. #include <stdio.h>
  2. void insert_sort(int* array, int n)
  3. {
  4. int i, j;
  5. int temp;
  6. for (i = 1; i < n; i++) // 让前i + 1个数有序
  7. {
  8. temp = array[i];
  9. for (j = i; j > 0 && array[j - 1] > temp; j--) // 第i个数依次和前面的每个数比较,直到比前一个数大为止
  10. {
  11. array[j] = array[j - 1]; // 第j个数右移
  12. }
  13. array[j] = temp;
  14. }
  15. }
  16. void InsertSort(int* pArr, int cnt)
  17. {
  18. int temp;
  19. for (int i = 1; i < cnt; i++)
  20. {
  21. // 0 ~ i 排序
  22. temp = pArr[i];
  23. int j; // temp的目标位置
  24. for (j = i; j > 0; j--)
  25. {
  26. if (temp < pArr[j - 1])
  27. {
  28. pArr[j] = pArr[j - 1];
  29. }
  30. else
  31. {
  32. break;
  33. }
  34. }
  35. pArr[j] = temp;
  36. }
  37. }
  38. ////////////////////////
  39. // 通过插入得到一个有序列(动态)
  40. // 随时都有序
  41. int g_arr[100];
  42. int g_cnt = 0;
  43. void Insert(int num)
  44. {
  45. int i;
  46. for (i = g_cnt; i > 0; i--)
  47. {
  48. if (num < g_arr[i - 1])
  49. {
  50. g_arr[i] = g_arr[i - 1];
  51. }
  52. else
  53. {
  54. break;
  55. }
  56. }
  57. g_arr[i] = num;
  58. g_cnt++;
  59. }
  60. int main()
  61. {
  62. int arr[] = { 5, 6, 2, 1, 7, 4, 3, 0 };
  63. //InsertSort(arr, 8);
  64. for (int i = 0; i < 8; i++)
  65. {
  66. Insert(arr[i]);
  67. }
  68. for (int i = 0; i < g_cnt; i++)
  69. {
  70. printf("%d\n", g_arr[i]);
  71. }
  72. return 0;
  73. }
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注