不好意思
对不起各位我想了一个晚上还是没想出新算法
当我在冒泡法的基础上改了一下
我努力提高效率
请看:
#include<stdio.h>
void main()
{
int a[11];
int i,j,t,p=0;
printf("input 10 numbers :\n");
for(i=1;i<11;i++)
scanf("%d",&a[i]);
printf("\n");
for(j=1;j<=9;j++)
{
for(i=1;i<=10-j;i++)
{
if(a[i]>=a[i+1])
{
t=a[i];
a[i+1]=a[i];
a[i+1]=t;
p=1;
}
}
if(p=0)
break;
else
p=0;
}
for(i=1;i<11;i++)
printf("%d ", a[i]);
}
我新增了个int变量多耗了内存2个字节
每次a[i]和a[i+1]交换值就把1赋给这个变量
出了这个循环就判断a[i]和a[i+1]是否交换过值
没有就是已排好不用循环了
在数比较多的情况下我觉得提高了效率