WHCSRL 技术网

C语言排序之选择排序

对于我们人眼来说,排序是一件非常简单的事情,但对于计算机就没那么友好了。

下面三个代码分别是我学c初期与现在分别写出的比较大小的方式

1.最好理解的方式,但是最写起来最麻烦!

  1. #include <stdio.h>
  2. int main()
  3. {
  4. int Max,Min,Mid;
  5. scanf("%%d %%d %%d",&Max ,&Mid ,&Min);
  6. if(Max>Mid){
  7. if(Mid>Min){
  8. printf("Max=%%d Mid=%%d Min=%%d",Max,Mid,Min);
  9. } else{
  10. if(Max>Min){
  11. printf("Max=%%d Mid=%%d Min=%%d",Max,Min,Mid);
  12. } else{
  13. printf("Max=%%d Mid=%%d Min=%%d",Min,Max,Mid);
  14. }
  15. }
  16. }
  17. else{
  18. if(Mid>Min){
  19. if(Max>Min){
  20. printf("Max=%%d Mid=%%d Min=%%d",Mid,Max,Min);
  21. } else{
  22. printf("Max=%%d Mid=%%d Min=%%d",Mid,Min,Max);
  23. }
  24. } else{
  25. printf("Max=%%d Mid=%%d Min=%%d",Min,Mid,Max);
  26. }
  27. }
  28. return 0;
  29. }

2. 选择排序:较难理解,可用于任意数字的比较大小,适用范围广!

 

  1. #define _CRT_SECURE_NO_WARNINGS 1
  2. #include<stdio.h>
  3. #include<math.h>
  4. #include<stdlib.h>
  5. #include<string.h>
  6. #include<stdbool.h>
  7. int main()
  8. {
  9. printf("请输入要比较大小的个数:");
  10. int n;
  11. scanf("%%d", &n);
  12. int number[99999];
  13. for (int i = 1; i <= n; i++)
  14. {
  15. scanf("%%d", &number[i]);
  16. }
  17. for (int i = 1; i <= n; i++) //选择第i个数字同后面的数字进行比较 (外层循环,保证每个数字都同后面的数字比较了)
  18. {
  19. for (int j = i; j <= n; j++) //第i个数字开始同后面比较(内层循环,确定该位置数字为其后面数字中最大的那个)
  20. {
  21. //int max = number[i];
  22. if (number[i] < number[j]) //若后面的数字大,则进行与第i个数字交换!
  23. {
  24. int t = number[i];
  25. number[i] = number[j];
  26. //int max = number[j];
  27. number[j] = t;
  28. }
  29. }
  30. }
  31. for (int i = 1; i <= n; i++) //遍历数组,输出排序后的数组!
  32. {
  33. printf("%%d ", number[i]);
  34. }
  35. return 0;
  36. }
  37. //该为选择排序,选择第一个数字同后面所有数字进行一一比较,若后面数字大,则进行交换位置,最后可以得出第一个数字为最大的一个!
  38. //第二个进行时同理,与第二个后比较,与大的一一交换,最后得出除第一个外最大的数!

 

 该办法可以适用于多位数的比较!

(注:本文为原创作品,若无意侵权,请联系我。)

欢迎点赞 👍 关注收藏 ⭐留言 📝  

推荐阅读