直接插入排序
Posted spore
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了直接插入排序相关的知识,希望对你有一定的参考价值。
/****************************** 直接插入排序:S=O(1);T=O(n*n); 比较次数取决于待排序的初始状态。 稳定的排序 *******************************/ #include <stdio.h> int main() int a[11],i; //注意是a[11],而不是a[10],因为InsertSort函数中A[0]是不存放元素的 printf("请输入10个数据:\n"); for(i=1;i<11;i++) scanf("%d",&a[i]); InsertSort(a,10); printf("插入排序后的序列为:\n"); for(i=1;i<11;i++) printf("%d ",a[i]); return 0; int InsertSort(int A[],int n) int i,j; for(i=2;i<=n;i++) //A[0]是哨兵,不存放元素,A[1]只有一个元素,无需比较,所以i从2开始。 //共有n个元素,进行n-1趟循环,依次将A[2]-A[n]插入到前面已排序序列 if(A[i]<A[i-1]) //若A[i]的关键字码小于其前驱,需将[i]插入有序表 A[0] = A[i]; //将A[i]的关键字复制给A[0] for(j=i-1;A[j]>A[0];j--)//查找带插入位置 A[j+1] = A[j]; //向后挪位 A[j+1] = A[0];//插入到带插入位置
以上是关于直接插入排序的主要内容,如果未能解决你的问题,请参考以下文章
直接插入排序 ,折半插入排序 ,简单选择排序, 希尔排序 ,冒泡排序 ,快速排序 ,堆排序 ,归并排序的图示以及代码,十分清楚