关于C语言一维数组排序问题

2020-05-08 教育 106阅读
冒泡排序法:
#include
void main()
{ int a[5]={5,4,3,2,9},i,k,temp;
for(k=0;k<5;k++)
{for(i=k+1;i<5;i++)
if(a[k] {temp=a[k];
a[k]=a[i];
a[i]=temp;
}
printf(" %d",a[k]);
}
getch();
}
以下是各种基本排序的算法,有时间可以看看
选择排序:
#include "stdio.h"
#define N 5
main()
{
int i,j,k,t;
int a[N];
printf("请输入五位数:\n");
for(i=0;i scanf("%d",&a[i]);
for(i=0;i {
k=i;
for(j=i+1;j if(a[k]>a[j]) k=j;
if(i!=k)
{
t=a[k];
a[k]=a[i];
a[i]=t;
}
}
for(i=0;i printf("%d\t",a[i]);
printf("\n");
}
插入排序法:
#include "stdio.h"
#define N 5
main()
{
int i,j,k;
int a[N];
printf("请输入五位数:\n");
for(i=0;i scanf("%d",&a[i]);
for(i=0;i {
k=a[i];
j=i-1;
while(j>=0&&k {
a[j+1]=a[j];
j--;
}
a[j+1]=k;
}
for(i=0;i printf("%d\t",a[i]);
printf("\n");
}
shell排序法:
#include "stdio.h"
#define N 10
main()
{
int i,j,k,m,flag;
int a[N]={10,33,23,45,12,67,44,22,33,18};
m=N;
while(m>1)
{
m=(m+1)/2;
do
{
flag=0;
for(i=0;i {
j=i+m;
if(a[i]>a[j])
{
k=a[i];a[i]=a[j];a[j]=k;flag=1;
}
}
}while(flag);
}
for(i=0;i printf("%d ",a[i]);
printf("\n");
}
如果对你有所帮助,请记得采纳最佳答案,谢谢!
声明:你问我答网所有作品(图文、音视频)均由用户自行上传分享,仅供网友学习交流。若您的权利被侵害,请联系fangmu6661024@163.com