欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 游戏 > 排序---快速排序

排序---快速排序

2024/10/24 17:28:12 来源:https://blog.csdn.net/sunshine350/article/details/139479195  浏览:    关键词:排序---快速排序

前言

个人小记


一、代码


#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#define MAX_ARR 100000
#define swap(a,b)\
{\__typeof(a) __c=a;\a=b,b=__c;\
}
#define TEST(func ,arr,l,r)\
{\int n=r-l;\printf("test:%s\n",#func);\int *t=(int *)malloc(sizeof(int )*n);\memcpy(t,arr,n);\long long a=clock();\func(t,l,r);\long long b=clock();\if(check(t,n))printf("OK %lldms\n",(b-a)*1000/CLOCKS_PER_SEC);\else printf("FAIL\n");\free(t);\
}int check(int *t,int n)
{for(int i=1;i<n;i++){if(t[i-1]>t[i])return 0;}return 1;
}int* init_arr(int n)
{int* arr=(int*)malloc(sizeof(int)*n);for(int i=0;i<n;i++)arr[i]=rand()%100000;return arr;
}void quick_sort(int *arr,int l,int r)
{if(r-l<=2){if(r-l<=1)return ;if(arr[l]>arr[r-1])swap(arr[l],arr[r-1]);return ;}int a=l,b=r-1,z=arr[a];while(b>a){while(b>a&&arr[b]>z)b--;if(b>a)arr[a++]=arr[b];while(b>a&&arr[a]<z)a++;if(b>a)arr[b--]=arr[a];}arr[a]=z;quick_sort(arr,l,a);quick_sort(arr,a+1,r);return ;
}int main()
{srand((unsigned)time(0));int *arr=init_arr(MAX_ARR);TEST(quick_sort,arr,0,MAX_ARR);free(arr);return 0;
}

二、测试结果

test:quick_sort
OK 6ms

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com