直接插入排序1 .插入排序(Insertion-Sort )按大小将要排序的数据插入上一个已排序的适当位置,直到插入所有数据。
2 .插入排序步骤2.1,哨兵=创建临时变量,并将要插入的数据分配给它。 2.2、从后面比较插入的数据,如果大于前面,则记录下标,将数据向后移动,直到插入的数据遇到比其小的数据。 2.3、将临时变量分配给当前记录下标。 2.4、for环完成所有数据插入。 3 .插入排序视频演示
4 .完整代码# include stdio.hvoiddisplay (intarray [ ],int size ) { for } inti=0; i size; I ) {printf('%d ',array[i] ); }printf((n ); }voidinsertsort(intarray[],int size ) ) for ) intI=1; i size; I ) ) /第一个数一定是规则的。 从第二个数开始扫描,以获得有序阵列int temp=array[i];//取出第I个个数,与前面的i-1的个数进行比较后,插入适当的位置int j=i - 1; //由于前i-1的个数从小到大排列,所以只要当前被比较的数(array[j] )大于temp,就可以将该数与while(j=0array[j]temp ) (/当j 0或array[j] )进行比较//前瞻性比较(//退出循环的array[j 1]=temp; //array[i]在正确的位置插入//打印每次排序的结果display(array,size ); }}int main () intarray ) )={ 49,38,65,97,76,13,27,49,10 }; intsize=sizeof(array )/sizeof (int ); //打印原始数据printf(%d(n )、size ); display(Array,size ); insertsort(Array,size ); 返回0; )5.显示结果(显示每个插入的信息) ) ) )。
6 .算法分析时间的复杂度:平均o(n )2),最高o ) n ),最差o ) n )2) ) )。
空间复杂性: o(1) ) ) ) ) )的空间复杂性。
稳定性:稳定性