当前位置:   article > 正文

排序算法心得_排序程序设计实验总结

排序程序设计实验总结

1.选择排序与冒泡排序的区别

    选择排序(每轮计算得到每轮的最小或者最大)是进行判别,符合条件进行交换。冒泡排序则是在每次循环中依次对元素进行判断和交换位置。主要差异就在于交换位置的频繁程度上。

2.双向冒泡排序

    复杂度上来说,和传统冒泡排序没有什么大的改动。但数据量非常大的时候,双向冒泡排序可以提高排列顺序的效率。从前往后确定本轮最大值,right-1,从后向前确定本轮最小值,left+1。终止条件为left > right。

    比传统冒泡排序的复杂的地方在于,1. left和right两个指针的出现;2. 循环体中的两次方向不同的冒泡排序

代码如下:

  1. void Bubble2Sort(int arr[], int length)
  2. {
  3. left = 1;
  4. right = length-1;
  5. int t;
  6. do
  7. {
  8. //从后向前,找最小
  9. for(int i = right; i >= left; --i)
  10. {
  11. if(arr[i-1] > arr[i])
  12. {
  13. Swap(arr[i], arr[i-1]);
  14. t = i;
  15. }
  16. }
  17. left = t+1; //每次确定本轮的最小值后,left要加1,缩小范围
  18. //从前往后,找最大
  19. for(int i = left, i < right+1; ++i)
  20. {
  21. if(arr[i] < arr[i-1])
  22. {
  23. Swap(arr[i],arr[i-1]);
  24. t = i;
  25. }
  26. }
  27. right = t-1; //每次确定本轮的最大值后,right减1 缩小范围
  28. }while(left<=right)
  29. }


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

闽ICP备14008679号