当前位置:   article > 正文

C练习——插入有序数组_c语言将元素插入有序数组

c语言将元素插入有序数组

题目:

编写一个函数,实现在一个升序数组中查找x应插入位置,将x插入数组中,并使其入仍升序

解析:

插入是数组基本操作,从第零位遍历数组与x比较,x小于或等于arr[i]时,从arr[i]开始移动数组元素向后移一位,arr[i] =x 

逻辑:

for循环遍历if比较出位置i,for循环遍历 从尾部j开始,到i结束,将此段元素全部向后移动一位,最后arr[i]=x

参考代码:

  1. // 编写一个函数,实现在一个升序数组中查找x应插入位置,将x插入数组中,并使其入仍升序
  2. #include <stdio.h>
  3. void insert(int *str, int x,int sz)
  4. {
  5. int i = 0;
  6. int j = 0;
  7. for (i = 0; i < sz-2; i++) // 使用指针得注意sz取值
  8. {
  9. if (x <= *(str+i)) // x插入数组首或中部
  10. {
  11. for (j = sz-1; j >= i; j--)
  12. {
  13. *(str + j) = *(str + j - 1);
  14. }
  15. *(str + i) = x;
  16. break;
  17. }
  18. else if (x > *(str + sz - 2)) // x 插入数组尾部
  19. {
  20. *(str + sz-1) = x;
  21. }
  22. }
  23. }
  24. int main()
  25. {
  26. int arr[5] = { 1,2,4,6 };
  27. int x = 0;
  28. int sz = sizeof(arr)/sizeof(arr[0]);
  29. printf("%d\n", sz);
  30. insert(arr, x, sz);
  31. int i = 0;
  32. for (i = 0; i < sz; i++)
  33. {
  34. printf("%d ,", arr[i]);
  35. }
  36. return 0;
  37. }

运行结果:

 

 

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

闽ICP备14008679号