当前位置:   article > 正文

排序算法之直接插入法

直接插入

插入算法主要记住三点:就是算法的核心了

1.要比较的元素拿出来
2.符合条件的元素后移
3.把拿出来的元素放到正确的位置

直接上代码:

  1. #include<iostream>
  2. using namespace std;
  3. //直接插入元素的本质
  4. /*
  5. 1.要比较的元素拿出来
  6. 2.符合条件的元素后移
  7. 3.把拿出来的元素放到正确的位置
  8. 49 38 65 97 76 13 27
  9. */
  10. void StraitInsertSort(int array[],int length)
  11. {
  12. int tmp = -1;
  13. int k = -1;
  14. for (int i = 1; i < length; i++)
  15. {
  16. k = i;//要插入的位置
  17. tmp = array[k];//1.要比较的元素拿出来
  18. for (int j = i - 1; j >= 0 && array[j]>tmp; j--)
  19. {
  20. array[j + 1] = array[j];//2.满足条件后移
  21. k = j;
  22. }
  23. array[k] = tmp;//3.把拿出来的元素放到正确位置
  24. }
  25. }
  26. //49 38 65 97 76 13 27
  27. void StraitInsertSort1(int array[], int length)
  28. {
  29. int tmp = -1;
  30. int j = 0;
  31. for (int i = 1; i < length; i++)
  32. {
  33. if (array[i]<array[i - 1])
  34. {
  35. tmp = array[i];//1.要比较的元素拿出来
  36. for (j = i - 1; j >= 0 && array[j]>tmp; j--)
  37. {
  38. array[j + 1] = array[j];//2.满足条件后移
  39. }
  40. array[j+1] = tmp;//3.把拿出来的元素放到正确位置
  41. }
  42. }
  43. }
  44. int main()
  45. {
  46. int array[7] = {49,38,65,97,76,13,27};
  47. int length = sizeof(array) / sizeof(int);
  48. StraitInsertSort1(array, length);
  49. for (int i = 0; i < length; i++)
  50. {
  51. printf("array[%d]=%d\n",i,array[i]);
  52. }
  53. return 0;
  54. }

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/木道寻08/article/detail/736881
推荐阅读
相关标签
  

闽ICP备14008679号