指针自增的效率问题

先上代码,

#include<iostream>
#include<stdlib.h>
#include<time.h>
#include <windows.h> 
using namespace std;
int main(){
    clock_t start, end;

    char str[100];
    char *p=str;
    for(int i=0;i<100;i++){
        str[i]=100-i;
        printf("%d ",str[i]);
    }
    printf("\n");
    start=clock();

    for(int i=0;i<100;i++){
        for(int j=0;j<100-i-1;j++){
            if(*(str+j)>*(str+j+1)){
                char temp=*(str+j);
                *(str+j)=*(str+j+1);
                *(str+j+1)=temp;
            }
        }
    }

    for(;*p!='\0';p++){
        for(;*p!='\0';p++){
            if(*p>*(p+1)){
                char *temp=p;
                *p=*(p+1);
                *(p+1)=*temp;
            }
        }
    }


    end=clock();
    for(int i=0;i<100;i++){
        printf("%d ",str[i]);
    } 
    printf("\n用时:%f",double(end-start)*1000);
    system("pause");
    return 0;

}

第一个冒泡排序用时(24单位时间)比第二个冒泡排序(2单位时间)用时长的多

*(arr+i)本质上和arr[i]是一样的

所以指针自增的效率属实快很多……



2021年 December 19日|16:31  作者:
目录: 提问、复习等, 计算机 标签:,,
欢迎留下你的评论~~
订阅
通知
guest
0 Comments
内嵌回复
查看所有评论