冒泡排序:

冒泡排序可以分成两种:主动冒泡(从左到右)和被动冒泡(从右到左):

重复性的两两循环,直到一次排序结束

详情请查看代码

代码中包含了两种冒泡排序算法,分别为从左到右和从右到左的算法

  1. /**
  2. 冒泡排序和选择排序
  3. */
  4. #include<stdio.h>
  5.  
  6. void swap(int* a,int* b)
  7. {
  8. int c;
  9. c = *a;
  10. *a = *b;
  11. *b = c;
  12. }
  13. int main()
  14. {
  15. int nums[10] = {123,225,12,1,36,35,14,98,999,30};
  16. int i,j;
  17. /*
  18. 从后面冒泡 (被动冒泡)
  19. */
  20. /*for(i = 0;i<10;i++)
  21. {
  22. for(j = 9;j-i>0;j--)
  23. {
  24. if(nums[j]<nums[j-1])
  25. {
  26. swap(&nums[j],&nums[j-1]);
  27. }
  28. }
  29. }*/
  30. /*
  31. 从前面冒泡
  32. */
  33. for(i =10;i>0;i--)
  34. {
  35. for(j = 0;j<i-1;j++)
  36. {
  37. if(nums[j]>nums[j+1])
  38. {
  39. swap(&nums[j],&nums[j+1]);
  40. }
  41. }
  42. }
  43. for(i = 0;i<10;i++)
  44. {
  45. printf("%d ",nums[i]);
  46. }
  47. printf("\n");
  48. return 0;
  49. }

选择排序:

每次都是找出一个最小的数字进行排序

一杆到底:找出最小的数和每个数字排序

下面请查看代码:

  1. #include<stdio.h>
  2.  
  3. void swap(int* a,int* b)
  4. {
  5. int c;
  6. c = *a;
  7. *a = *b;
  8. *b = c;
  9. }
  10. int main()
  11. {
  12. int nums[10] = {123,225,12,1,36,35,14,98,999,30};
  13. int i,j;
  14. for(i = 0;i<10;i++)
  15. {
  16. for(j = i+1;j<10;j++)
  17. {
  18. if(nums[i]>nums[j])
  19. {
  20. swap(&nums[i],&nums[j]);
  21. }
  22. }
  23. }
  24. for(i = 0;i<10;i++)
  25. {
  26. printf("%d ",nums[i]);
  27. }
  28. printf("\n");
  29. return 0;
  30. }

 

如有问题,请指出!

  

版权声明:本文为Rect-yy-dgs原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:http://www.cnblogs.com/Rect-yy-dgs/p/8063925.html