当前位置:   article > 正文

2月6日作业

2月6日作业

1.现有无序序列数组为23,24,12,5,33,5347,请使用以下排序实现编程
函数1:请使用冒泡排序实现升序排序
函数2:请使用简单选择排序实现升序排序
函数3:请使用快速排序实现升序排序
函数4:请使用插入排序实现升序排序 

  1. #include<stdio.h>
  2. #include<string.h>
  3. #include<stdlib.h>
  4. //冒泡
  5. void bubble(int arr[],int len)
  6. {
  7. for(int i=1;i<len;i++)
  8. {
  9. for(int j=0;j<len-i;j++)
  10. {
  11. if(arr[j]>arr[j+1])
  12. {
  13. int t=arr[j];
  14. arr[j]=arr[j+1];
  15. arr[j+1]=t;
  16. }
  17. }
  18. }
  19. }
  20. //简单选择
  21. void simple(int arr[],int len)
  22. {
  23. for(int i=0;i<len;i++)
  24. {
  25. int min=i;
  26. for(int j=i;j<len;j++)
  27. {
  28. if(arr[min]>arr[j])
  29. min=j;
  30. }
  31. if(min!=i)
  32. {
  33. int t=arr[min];
  34. arr[min]=arr[i];
  35. arr[i]=t;
  36. }
  37. }
  38. }
  39. //输出
  40. void output(int arr[],int len)
  41. {
  42. for(int i=0;i<len;i++)
  43. {
  44. printf("%-4d",arr[i]);
  45. }
  46. puts("");
  47. }
  48. //一次排序,返回基准值下标
  49. int one_sort(int arr[],int low,int high)
  50. {
  51. int key=arr[low];
  52. while(low<high)
  53. {
  54. while(low<high && key <= arr[high])
  55. high--;
  56. arr[low]=arr[high];
  57. while(low<high && key >=arr[low])
  58. low++;
  59. arr[high]=arr[low];
  60. }
  61. arr[low]=key;
  62. return low;
  63. }
  64. //快速排序
  65. void quick(int arr[],int low,int high)
  66. {
  67. if(low>=high)
  68. return;
  69. int mid=one_sort(arr,low,high);
  70. quick(arr,low,mid-1);
  71. quick(arr,mid+1,high);
  72. }
  73. //插入排序
  74. void insert_sort(int arr[],int len)
  75. {
  76. int i,j;
  77. for(i=1;i<len;i++)
  78. {
  79. int temp=arr[i];
  80. for(j=i-1;j>=0;j--)
  81. {
  82. if(arr[j]>temp)
  83. {
  84. arr[j+1]=arr[j];
  85. }
  86. else
  87. break;
  88. }
  89. arr[j+1]=temp;
  90. }
  91. }
  92. int main(int argc, const char *argv[])
  93. {
  94. int arr[]={23,24,12,5,33,5,34,7};
  95. int len=sizeof(arr)/sizeof(arr[0]);
  96. bubble(arr,len);
  97. output(arr,len);
  98. simple(arr,len);
  99. output(arr,len);
  100. quick(arr,0,len-1);
  101. output(arr,len);
  102. insert_sort(arr,len);
  103. output(arr,len);
  104. return 0;
  105. }

2.写了个递归函数 DigitSum(n),输入一个非负整数,返回组成它的数字之和
例如:调用 DigitSum(1729),则返回 1+7+2+9,它的和是 19
输入1729,输出 19

  1. #include<stdio.h>
  2. #include<string.h>
  3. #include<stdlib.h>
  4. int DigitSum(int num)
  5. {
  6. if(num<0)
  7. return -1;
  8. else if(num>=0 && num<=9)
  9. return num;
  10. else
  11. {
  12. int sum=num%10+DigitSum(num/10);
  13. return sum;
  14. }
  15. }
  16. int main(int argc, const char *argv[])
  17. {
  18. int num;
  19. printf("please enter num:");
  20. scanf("%d",&num);
  21. int s=DigitSum(num);
  22. if(s==-1)
  23. puts("error");
  24. else
  25. printf("s=%d\n",s);
  26. return 0;
  27. }

3.写一个宏,可以将一个 int 型整数的二进制位的奇数位和偶数位交换 

  1. #include<stdio.h>
  2. #include<string.h>
  3. #include<stdlib.h>
  4. #define SWAP(num) (((num&0xaaaaaaaa)>>1) + ((num & 0x55555555)<<1))
  5. int main(int argc, const char *argv[])
  6. {
  7. int num;
  8. printf("please enter num:");
  9. scanf("%d",&num);
  10. printf("s_num=%d\n",SWAP(num));
  11. return 0;
  12. }

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

闽ICP备14008679号