C语言实现四种数组排序方法
插入法排序(升序)#include<stdio.h>void main(){int i,a[10],temp,pos;printf("为数组元素赋值:\n");for(i=0;i<10;i++){printf("a[%d]=",i);scanf("%d",&a[i]);}for(i=1;i<10;i++){tem...
·
插入法排序(升序)
#include<stdio.h>
void main()
{
int i,a[10],temp,pos;
printf("为数组元素赋值:\n");
for(i=0;i<10;i++)
{
printf("a[%d]=",i);
scanf("%d",&a[i]);
}
for(i=1;i<10;i++)
{
temp=a[i];
pos=i-1;
while((pos>=0) && (temp<a[pos]))
{
a[pos+1]=a[pos];
pos--;
}
a[pos+1]=temp;
}
for(i=0;i<10;i++)
{
printf("%d\t",a[i]);
}
}
交换法排序(降序)
#include<stdio.h>
void main()
{
int a[10];
int i,j,temp;
printf("为数组元素赋值:\n");
/*从键盘为数组元素赋值(成绩)*/
for(i=0;i<10;i++)
{
printf("a[%d]=",i);
scanf("%d",&a[i]);
}
/*从小到大排序*/
for(i=0;i<10;i++)//设置外层循环
{
for(j=i+1;j<10;j++)//设置内层循环
{
if(a[j]>a[i])//如果前一个数比后一个数大
{
/*交换两个数组元素的值*/
temp=a[i];
a[i]=a[j];
a[j]=temp;
}
}
}
//输出数组
for(i=0;i<10;i++)
{
printf("%d\t",a[i]);//输出制表位
if(i==4)//如果是第五个元素
printf("\n");//输出换行
}
printf("\n");
}
冒泡法排序 (升序)
#include<stdio.h>
void main()
{
int a[10];
int i,j,temp;
printf("为数组元素赋值:\n");
/*从键盘为数组元素赋值(成绩)*/
for(i=0;i<10;i++)
{
printf("a[%d]=",i);
scanf("%d",&a[i]);
}
/*从小到大排序*/
for(i=0;i<10;i++)//设置外层循环
{
for(j=9;j>=i;j--)//设置内层循环
{
if(a[j]<a[j-1])//如果前一个数比后一个数大
{
/*交换两个数组元素的值*/
temp=a[j-1];
a[j-1]=a[j];
a[j]=temp;
}
}
}
//输出数组
for(i=0;i<10;i++)
{
printf("%d\t",a[i]);//输出制表位
if(i==4)//如果是第五个元素
printf("\n");//输出换行
}
printf("\n");
}
选择法排序(降序)
#include<stdio.h>
void main()
{
int a[10];
int i,j,max,pos;
printf("为数组元素赋值:\n");
/*从键盘为数组元素赋值(成绩)*/
for(i=0;i<10;i++)
{
printf("a[%d]=",i);
scanf("%d",&a[i]);
}
/*从高到低排序*/
for(i=0;i<10;i++)//设置外层循环
{
max = a[i];//设置当前元素为最大值
pos = i;//记录元素位置
for(j=i+1;j<10;j++)//内层循环i+1到9
{
if(a[j]>max)//如果当前元素比最高值还要高
{
max = a[j];//重新设置最高值
pos = j;//记录元素位置
}
}
/*交换两个元素值*/
a[pos] = a[i];
a[i] = max;
}
//输出数组
for(i=0;i<10;i++)
{
printf("%d\t",a[i]);//输出制表位
if(i==4)//如果是第五个元素
printf("\n");//输出换行
}
printf("\n");
}
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
已为社区贡献1条内容
所有评论(0)