我是靠谱客的博主 忐忑黑夜,最近开发中收集的这篇文章主要介绍C语言三大排序法(冒泡、选择、插入),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

三大排序法

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语言三大排序法(冒泡、选择、插入)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(42)

评论列表共有 0 条评论

立即
投稿
返回
顶部