三个版本的插入排序 - 编程珠玑

isort1:

for i=[1,n)

    for( j=i; j>0&&x[j]<x[j-1]; --j )
        swap(x[j], x[j-1]);

isort2:

for i=[1,n)

    for( j=i; j>0&&x[j]<x[j-1]; --j )
        tmp = x[j], x[j]=x[j-1]); x[j-1])=tmp;

isort3:
for i=[1,n)

    int t = x[i];

    for( j=i; j>0&&t<x[j-1]; --j )
         x[j])=x[j-1];
    x[j]=t;

 


执行效果上看:
1: 由于多了swap函数调用,速度极其慢!    11s
2: 由于去掉了swap函数调用,速度快了不少 3.8s
3: 逻辑上优化了,速度更快了点                   3.2s

你可能感兴趣的:(编程,优化)