插入法排序(升序)
#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");
}