(i=0i<n-1i++)
{
for(j=ij<n-1j++)
直接插入排序的基本思想是:当插入第i
(i≥
1)
个对象时,前面的V[0],
V[1],
…,
v[i-1]已经排好序。这时,用v[i]的关键码与v[i-1],
v[i-2],
…的关键码顺序进行比较,找到插入位置即将v[i]插入,原来位置上的对象向后顺移。
用c实现的插入排序法,先输入10个数,然后利用插入排序法进行排序,将结果输出。
#include
"stdio.h"
#include
"conio.h"
main()
{
int
a[10],r[11]
int
*p
int
i,j
for(i=0i<10i++)
{
p=&a[i]
printf("please
scan
the
NO:
%d\n",i)
scanf("%d",p)
r[i+1]=a[i]
}
r[0]=1
for(i=2i<=10i++)
{
r[0]=r[i]
j=i-1
while(r[j]>r[0])
{
r[j+1]=r[j]
j--
}
r[j+1]=r[0]
}
for(i=1i<=10i++)
{p=&r[i]printf("form
min
to
max
the
NO:
%d
value=%d\n",i,*p)}
getch()
}
起泡排序:需反复比较相邻两个数的比较与交换这两种基本操作。对相邻的两个数进行比较时,如果反面的数大于(或小于)前面的数,将这两个数进行交换,大的数(小的数)往前冒。
void
Sort(a,n)
/*排序*/
{
float
a[]
int
n
{
int
i
int
flag
float
t
do{
flag=0
for(i=0i<=n-2i++)
if(a[i+1]>a[i])
{
t=a[i]a[i]=a[i+1]a[i+1]=t
flag=1
}
}while(flag)
}