您的位置:首页 > 理论基础 > 数据结构算法

数据结构之直接插入排序

2018-03-20 19:27 134 查看
有序序列L[1...i-1]L(i)无序序列L[i+1...n]
        将元素L(i)插入到已有序的子序列L[i...i-1]中,大致步骤:从L(i)开始从后向前依次比较,若不符合排序规则则交换,直到符合为止(可能到达序列开始,也可能在中间停止)。1)空间复杂度:O(1)。
2)时间复杂度:最好:O(n)只需要比较,不需要移动。平均:O(n²)。最坏:O(n²),例如与排序规则相反。
3)稳定性:稳定。
例如:#include <stdio.h>

int a[10] = {6, 3, 9, 2, 1, 8, 5, 7, 4,0};
void InsertSort(){
int i,j;
for(i=1;i<10;i++){
for(j=i;j>0;j--){
if(a[j]<a[j-1]){
int temp = a[j];
a[j] = a[j-1];
a[j-1] = temp;
}else{
break;
}
}
}
}

int main(){
int i;
InsertSort();
for(i=0;i<9;i++){
printf("%d<",a[i]);
}
printf("%d",a[9]);
return 0;
}



                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: