/*插入排序法*/
#include <stdlib.h>
/*
排序思路:在第P次排序时将P位置上的数据插入到前P-1个数据中
时间复杂度(O(N^2))
typedef int ElementType;
void InsertSorted(ElementType A[],int N)
{
int j,p;//p表示第p趟排序
ElementType Tmp;
for (p=1;p<N;p++) {//进行N-1趟排序
Tmp = A[p];
//从j=p位置向前查找,当查找到的数比Tmp大的时候就将这些数向后移动一位
for(j=p;j>0&&A[j-1]>Tmp;j--)
A[j]=A[j-1];
A[j] = Tmp;
}
}
void main()
{
ElementType a[6] = {8,34,64,51,32,21};
InsertSorted(a,6);
for(int i=0;i<6;i++)
printf("%d ",a[i]);
}
#include <stdlib.h>
/*
排序思路:在第P次排序时将P位置上的数据插入到前P-1个数据中
时间复杂度(O(N^2))
*/
初试
初始 | 34 | 8 | 64 | 51 | 32 | 21 | 移动的位置 |
在P=1 之后 | 8 | 34 | 64 | 51 | 32 | 21 | 1 |
在P=2之后 | 8 | 34 | 64 | 51 | 32 | 21 | 0 |
在p=3之后 | 8 | 34 | 51 | 64 | 32 | 21 | 1 |
在p=4之后 | 8 | 32 | 34 | 51 | 64 | 21 | 3 |
在p=5之后 | 8 | 21 | 32 | 34 | 51 | 64 | 4 |
typedef int ElementType;
void InsertSorted(ElementType A[],int N)
{
int j,p;//p表示第p趟排序
ElementType Tmp;
for (p=1;p<N;p++) {//进行N-1趟排序
Tmp = A[p];
//从j=p位置向前查找,当查找到的数比Tmp大的时候就将这些数向后移动一位
for(j=p;j>0&&A[j-1]>Tmp;j--)
A[j]=A[j-1];
A[j] = Tmp;
}
}
void main()
{
ElementType a[6] = {8,34,64,51,32,21};
InsertSorted(a,6);
for(int i=0;i<6;i++)
printf("%d ",a[i]);
}