20140904 atoi字符串转化为整数源码

1、atoi源码

#include<stdio.h>
#include<assert.h>
bool isdigit1(char c)
{
    if(c<='9'&&c>='0')
        return true;
    else
        return false;
}
int AsciiToInt(char *str)
{
    assert(str!=NULL);        
    char sign='+';
    int total=0;
    int c;
    char *ptr=str;
    if(*ptr=='-'||*ptr=='+')
    {
        sign=*ptr++;
    }
    c=*ptr;
    while(isdigit1(c))
    {
        total=total*10+(c-'0');
        c=*(++ptr);
    }
    if(sign=='-')
        total=-total;
    return total;
}

int main()
{
    char str[]="-1245";
    int sum1=AsciiToInt(str);
    printf("%d\n",sum1);

}
 2、希尔排序比直接插入排序快的原因

希尔排序的时间性能优于直接插入排序的原因:

①当文件初态基本有序时直接插入排序所需的比较和移动次数均较少。

②当n值较小时,n和 的差别也较小,即直接插入排序的最好时间复杂度O(n)和最坏时间复杂度0( )差别不大。

在希尔排序开始时增量较大,分组较多,每组的记录数目少,故各组内直接插入较快,后来增量di逐渐缩小,分组数逐渐减少,而各组的记录数目逐渐增多,但由于已经按di-1作为距离排过序,使文件较接近于有序状态,所以新的一趟排序过程也较快。

因此,希尔排序在效率上较直接插入排序有较大的改进。

希尔排序为什么不稳定

希尔排序为什么是不稳定的呢 ?
例子 3  5  10  8  7 2  8  1 20  6
d=2 分成2组  (3  10  7  8  20) 和(5  8  2  1  6) 第一组的8在第二组的后面 
排序后(3 1 7 25 10 6 20 8,现在是第一组的8在第二组前面了   这里不稳定

 

 

http://blog.csdn.net/cjf_iceking/article/details/7916194

posted @ 2014-09-04 10:58  yexuannan  阅读(195)  评论(0编辑  收藏  举报