C语言排序之选择排序
对于我们人眼来说,排序是一件非常简单的事情,但对于计算机就没那么友好了。
下面三个代码分别是我学c初期与现在分别写出的比较大小的方式
1.最好理解的方式,但是最写起来最麻烦!
- #include <stdio.h>
- int main()
- {
- int Max,Min,Mid;
- scanf("%%d %%d %%d",&Max ,&Mid ,&Min);
- if(Max>Mid){
- if(Mid>Min){
- printf("Max=%%d
Mid=%%d
Min=%%d",Max,Mid,Min);
- } else{
- if(Max>Min){
- printf("Max=%%d
Mid=%%d
Min=%%d",Max,Min,Mid);
- } else{
- printf("Max=%%d
Mid=%%d
Min=%%d",Min,Max,Mid);
- }
- }
- }
- else{
- if(Mid>Min){
- if(Max>Min){
- printf("Max=%%d
Mid=%%d
Min=%%d",Mid,Max,Min);
- } else{
- printf("Max=%%d
Mid=%%d
Min=%%d",Mid,Min,Max);
- }
- } else{
- printf("Max=%%d
Mid=%%d
Min=%%d",Min,Mid,Max);
- }
- }
- return 0;
- }
2. 选择排序:较难理解,可用于任意数字的比较大小,适用范围广!
- #define _CRT_SECURE_NO_WARNINGS 1
- #include<stdio.h>
- #include<math.h>
- #include<stdlib.h>
- #include<string.h>
- #include<stdbool.h>
- int main()
- {
- printf("请输入要比较大小的个数:");
- int n;
- scanf("%%d", &n);
- int number[99999];
- for (int i = 1; i <= n; i++)
- {
- scanf("%%d", &number[i]);
- }
-
- for (int i = 1; i <= n; i++) //选择第i个数字同后面的数字进行比较 (外层循环,保证每个数字都同后面的数字比较了)
- {
- for (int j = i; j <= n; j++) //第i个数字开始同后面比较(内层循环,确定该位置数字为其后面数字中最大的那个)
- {
- //int max = number[i];
- if (number[i] < number[j]) //若后面的数字大,则进行与第i个数字交换!
- {
- int t = number[i];
- number[i] = number[j];
- //int max = number[j];
- number[j] = t;
- }
- }
- }
- for (int i = 1; i <= n; i++) //遍历数组,输出排序后的数组!
- {
- printf("%%d ", number[i]);
- }
- return 0;
- }
- //该为选择排序,选择第一个数字同后面所有数字进行一一比较,若后面数字大,则进行交换位置,最后可以得出第一个数字为最大的一个!
- //第二个进行时同理,与第二个后比较,与大的一一交换,最后得出除第一个外最大的数!
-
该办法可以适用于多位数的比较!
(注:本文为原创作品,若无意侵权,请联系我。)
欢迎点赞 👍 关注收藏 ⭐留言 📝
推荐阅读