插入排序
插入排序就是每一步都将一个待排数据按其大小插入到已经排序的数据中的适当位置,直到全部插入完毕。
插入排序方法分直接插入排序和折半插入排序两种,这里只介绍直接插入排序,折半插入排序留到“查找”内容中进行。
图1演示了对4个元素进行直接插入排序的过程,共需要(a),(b),(c)三次插入。
代码:
#include <stdio.h>
void trace(int A[],int N){
int i;
for(i=0;i<N;i++){
if(i>0)
printf(" %d",A[i]);
else
printf("%d",A[i]);
}
printf("\n");
}
void insertionSort(int A[],int N){
int i,j,v;
for(i=1;i<N;i++){
v=A[i];
j=i-1;
while(j>=0&&A[j]>v){
A[j+1]=A[j];
j--;
}
A[j+1]=v;
}
trace(A,N);
}
int main(){
int N,i,j;
int A[100];
scanf("%d",&N);
for(i=0;i<N;i++)
scanf("%d",&A[i]);
trace(A,N);
insertionSort(A,N);
}