1、直接插入法:在插入第i个记录时, 已经排序好了,这时将依次与关键字、 等进行比较,边比较边移动,直到找到该插入的位置停止比较和移动。
void sort(int a[],int n){
for(int i=1;i<n;i++){
if(a[i]<a[i-1]){
int j=i-1,temp=a[i];
while(j>=0&&temp<a[j]){
a[j+1]=a[j];
j--;
}
a[j+1]=temp;
}
}
}
最好情况下(待排序已有序),每趟排序只比较一次且不用移动,因此n个元素的总比较次数为n-1,总移动次数为0。
最坏情况下(待排序逆序),第i趟排序时,需要比较i-1次,因此总比较次数为
第i趟排序时移动的次数为
直接插入法是一种稳定的排序方法,时间复杂度为,空间复杂度为