当前位置:   article > 正文

C语言冒泡排序(升序)_升序c语言

升序c语言
  1. #include<stdio.h>
  2. void bubble_sort(int arr[], int sz)
  3. {
  4. //确定冒泡排序的趟数
  5. int i = 0;
  6. for (i = 0; i < sz - 1; i++)
  7. {
  8. //每一趟冒泡排序
  9. int j = 0;
  10. for (j = 0; j < sz - 1 - i; j++)
  11. {
  12. if (arr[j]>arr[j + 1])
  13. {
  14. int tem = arr[j];
  15. arr[j] = arr[j + 1];
  16. arr[j + 1] = tem;
  17. }
  18. }
  19. }
  20. }
  21. int main()
  22. {
  23. int arr[] = { 9, 8, 7, 6, 5, 4, 3, 2, 1, 0 };
  24. int sz = sizeof(arr) / sizeof(arr[0]);
  25. int i = 0;
  26. //对arr进行排序,排成升序
  27. //arr是数组,我们对数组arr进行传参,实际上传递过去的是数组arr首元素的地址&arr[0]
  28. bubble_sort(arr,sz);//冒泡排序函数
  29. for (i = 0; i < sz;i++)
  30. {
  31. printf("%d ",arr[i]);
  32. }
  33. return 0;
  34. }

因为当你排列的数组,不需要再排列数时,此程序仍然需要进行比较,所以进行代码改进:

这个代码的关键在于flag参数的设置,以及位置,需细细思考。

  1. #include<stdio.h>
  2. void bubble_sort(int arr[], int sz)
  3. {
  4. //确定冒泡排序的趟数
  5. int i = 0;
  6. for (i = 0; i < sz - 1; i++)
  7. {
  8. int flag = 1;//假设这一趟要排序的数据已经有序
  9. //每一趟冒泡排序
  10. int j = 0;
  11. for (j = 0; j < sz - 1 - i; j++)
  12. {
  13. if (arr[j]>arr[j + 1])
  14. {
  15. int tem = arr[j];
  16. arr[j] = arr[j + 1];
  17. arr[j + 1] = tem;
  18. flag = 0;//本趟数据不完全有序
  19. }
  20. }
  21. if (flag == 1)
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Monodyee/article/detail/417388
推荐阅读
相关标签
  

闽ICP备14008679号