博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
《算法导论》第二章----插入排序(伪代码实现、课后习题(递归版本、二分查找策略版本))...
阅读量:4619 次
发布时间:2019-06-09

本文共 1424 字,大约阅读时间需要 4 分钟。

插入排序是算导第一个分析的算法。

之前看了很多遍,一直没有把习题做了,现在好好把习题和思考题做做,锻炼自己能力,顺便用C语言实现经典算法和数据结构。

 最基础的插入排序是对前n-1项数据进行反向扫描。实现很简单,运行时间也很容易的出,直接贴代码:

void insertion_sort(int A[], int length){    int i, j;    int key;    for(j = 1; j < length; j++)    {        key = A[j];        i = j - 1;        while(i >= 0 && A[i] > key)        {            A[i+1] = A[i];            i--;        }        A[i+1] = key;    }}

 

练习题2.3-4要求将插入排序改写成递归过程。实现也是比较简单。

 

void insertion(int A[], int length){    if(length != 1){        int key = A[length-1];        int i = length-2;        while(i >= 0 && A[i] > key){            A[i+1] = A[i];            i--;        }        A[i+1] = key;    }}void insertion_sort(int A[], int length){    if(length > 1){        insertion_sort(A, length-1);        insertion(A, length);    }}

 

 

 练习2.3-6要求将最基础版本中的线性查找策略改成二分查找。

  

int binary_search(int A[], int key, int end){     int i = 0;     int j = end;     int m;     while(i < j){        m = (i + j) / 2;        if(key > A[m]){            i = m + 1;        }        else{            j = m;        }     }     if(A[i] >= key)         return i;     else         return i + 1;}void insertion_sort(int A[], int length){    int i, j;    int key;    int pos;    for(j = 1; j < length; j++)    {        key = A[j];        pos = binary_search(A, key, j-1);        for(i = j-1; i >= pos; i--)            A[i+1] = A[i];        A[pos] = key;    }}

 

 

 

转载于:https://www.cnblogs.com/alan-forever/p/3294511.html

你可能感兴趣的文章
sqlserver,oracle,mysql等的driver驱动,url怎么写
查看>>
局部变量和static变量的区别
查看>>
IE下iframe不能正常加载,显示空白
查看>>
mysql服务性能优化—my.cnf配置说明详解
查看>>
洛谷P1908 逆序对
查看>>
noip模拟赛 排列
查看>>
List 中添加多个List集合以及add() 与addAll()的区别
查看>>
如何处理测试人员的流动问题?
查看>>
1.border-image
查看>>
PagerIndicator主题样式修改
查看>>
java中HashMap类用法
查看>>
完整部署CentOS7.2+OpenStack+kvm 云平台环境(2)--云硬盘等后续配置
查看>>
分布式监控系统Zabbix-完整安装记录 -添加端口监控
查看>>
Python之反向迭代
查看>>
STM32F4 输入输出(GPIO)模式理解
查看>>
转义符
查看>>
poj 1019
查看>>
asp.net mvc上传文件
查看>>
bitmq集群高可用测试
查看>>
subline text3利用正则搜索
查看>>