三大排序法
1.冒泡排序法
冒泡排序法是通过两个相邻的数据进行比较然后立马交换
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26#include <stdio.h> int main() { int i,j,t; int a[10]; printf("请输入要排序的数字(升序):n"); for(i=0;i<10;i++) scanf("%d",&a[i]); //输入排序的数据 for(i=0;i<10;i++) { for(j=i+1;j<10;j++) //j=i+1 是将j放在i的后面,通过i与j的比较再进行交换 { if(a[i]>a[j]) { t=a[i]; //通过介质变量t存储a[i],来与a[j]进行交换 a[i]=a[j]; a[j]=t; } } } for(i=0;i<10;i++) //输出排序 printf("%dt",a[i]); return 0; }
2.选择法排序
给每个位置选择放当前最小元素,比如从 n 个数中选择出最小数放入第 1 个位置,在剩余 n-1 个元素里面再选择出最小数放第 2 个位置,依此类推,直到最后一个元素肯定是最大数。
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30#include <stdio.h> int main() { int a[10]; int i,j,t,min; printf("请输入要排序的数(升序):n"); for(i=0;i<10;i++) //输入数据 scanf("%d",&a[i]); for(i=0;i<10;i++) { min=i; //默认i为最小值 for(j=i+1;j<10;j++) { if(a[min]>a[j]) //判断当前最小值与现在活动的a[j]进行大小比较 min=j; //如果活动值a[j]为最小,那么将a[j]的位置赋给min } t=a[i]; //交换位置 a[i]=a[min]; a[min]=t; } printf("排序结果为:n"); for(i=0;i<10;i++) printf("%d",a[i]); return 0; }
3.插入法排序
将数组分为两个部分,第一部分为有序数组,第二部分为无序数组,不需要通过数据之间的交换
而是通过数据之间位置的挪动来进行数据的排序。
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19#include <stdio.h> int main() { int a[10],i,j,t; printf("请输入要排序的数据(升序):n"); for(i=0;i<10;i++) scanf("%d",&a[i]); for(i=1;i<10;i++) { t=a[i]; for(j=i-1;j>=0&&t<a[j];j--) a[j+1]=a[j]; a[j+1]=t; } printf("排序后结果为:n"); for(i=0;i<10;i++) printf("%dt",a[i]); return 0; }
最后
以上就是忐忑黑夜最近收集整理的关于C语言三大排序法(冒泡、选择、插入)的全部内容,更多相关C语言三大排序法(冒泡、选择、插入)内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复