1.1插入排序-简单(直接)插入排序

来源:互联网 发布:单片机用什么编程 编辑:程序博客网 时间:2024/06/05 23:44

1.1插入排序-简单(直接)插入排序

/* Straight Insertion Sort*/

一.评估

稳定的排序算法

时间复杂度O(n^2)

移动次数 最小值n-1,最大值(n+2)(n-1)/2,平均值(n^2)/4。

二.思想

逐一插入,由尾向前逐一比较。

r[0]作用:哨兵(监视哨)、暂存器。

void InsertSort(int *r){int i,j;for(i = 2;i <= N;i ++){r[0] = r[i];//r[0]为哨兵、暂存器for(j = i-1; r[0] < r[j]; j --){r[j+1] = r[j];}r[j+1] = r[0];}}

三.示例

/* Straight Insertion Sort*/
//Copyright @wangwei14309 All rights reservd# include <stdio.h>void creat(int *r);void InsertSort(int *r);void print(int *r);int N;int main(){int a[50];creat(a);InsertSort(a);print(a);}void creat(int *r){int i;printf("sort how many numbers :");scanf("%d",&N);printf("input %d numbers :",N);for(i = 1;i <= N;i ++){scanf("%d",&r[i]);}}void InsertSort(int *r){int i,j;for(i = 2;i <= N;i ++){r[0] = r[i];//r[0]为哨兵、暂存器for(j = i-1; r[0] < r[j]; j --){r[j+1] = r[j];}r[j+1] = r[0];}}void print(int *r){int i;printf("the result is :");for(i = 1; i <= N; \i ++)printf("%d ",r[i]);printf("\n");}


0 0
原创粉丝点击