概述
三大排序法
1.冒泡排序法
冒泡排序法是通过两个相邻的数据进行比较然后立马交换
#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 个位置,依此类推,直到最后一个元素肯定是最大数。
#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.插入法排序
将数组分为两个部分,第一部分为有序数组,第二部分为无序数组,不需要通过数据之间的交换
而是通过数据之间位置的挪动来进行数据的排序。
#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语言三大排序法(冒泡、选择、插入)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复